我试图制作这个回文检查器,但它有时会返回正确的答案,有时不会。请告诉我这段代码中的错误...我知道有更有效的方法来制作回文检查器,但出于学习目的,我想知道我的错误...
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");
答案 0 :(得分:0)
您不应将str长度作为参数传递。只需在replaceLetters中从str.length - 1创建一个可变长度。你也想要math.floor而不是math.ceil。让我们说一个9个字母的单词,你只想交换前4个字符而不是第5个字符。你不需要交换5号中间字符.Ex:Racecar,你不要用任何东西交换e检查它的回文。您也可以使用拼接功能,而不是使用自己的替换字母功能。一些其他的knitpicking,因为你只需要一次调用lowcase(),所以制作strlowercase var的重点是什么?