【问题标题】:How do I fix this palindrome checker?如何修复这个回文检查器?
【发布时间】:2015-11-28 15:03:10
【问题描述】:

我尝试制作这个回文检查器,但它有时会返回正确的答案,有时不会。请告诉我这段代码中的错误......我知道有更有效的方法来制作回文检查器,但出于学习目的,我想知道我的问题是什么......

function palindrome(str) {
  var newString;
  //convert string to lower-case
  var strLowerCase = str.toLowerCase();
  //Find string length
  var strLength = str.length;
  //replace first 1/2 with second 1/2
  newString = replaceLetters(strLowerCase,strLength);
  if(newString === strLowerCase){
    return true;
  }else{
    return false;
  }
}

function replaceLetters(string,length){
  var x;
  for(var a = 0; a<Math.ceil(length/2) ; a++){
    x = string.replace(string.charAt(a),string.charAt(length-1));
    length--; 
  }
  return x;
}


palindrome("eye");

【问题讨论】:

  • 你应该通过给出实际输出和预期输出的例子来告诉我们结果有什么问题。
  • 对我来说似乎工作正常...我已经尝试了许多带有奇数和偶数字母的输入。您会根据什么输入得到意想不到的结果?
  • 应该为任何失败提供一些输入。如果你想学习一种更好的方法来编写回文验证方法,那么stackoverflow.com/questions/22111507/… 会帮助你(+1 AK)

标签: javascript palindrome


【解决方案1】:

您不应将 str 长度作为参数传递。只需在 replaceLetters 中从 str.length - 1 创建一个可变长度。你也想要 math.floor 而不是 math.ceil。假设一个 9 个字母的单词,你只想交换前 4 个字符而不是前 5 个。你不需要交换中间的第 5 个字符。例如:Racecar,你不要用任何东西交换 e检查它是否是回文。您也可以使用拼接功能,而不是制作自己的替换字母功能。其他一些问题,既然您只调用了一次 lowercase(),那么制作 strlowercase var 有什么意义?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    相关资源
    最近更新 更多