我的目标是测试用户输入的单词(10个字母以下)是否为回文。我想这样做我比较第一个字母到最后一个字母,第二个字母到第二个到最后一个字母,第三个字母到第三个字母到最后一个......
我正在使用for循环和数组来执行此操作。我不能使用reverse()方法。我的主要问题是格式化我的比较方程式:
(lettersArray[i] + 1) == (lettersArray[i].length - 1)
这应该比较第一个到第二个,第二个和第二个到最后一个,依此类推。这是正确的格式吗?我是否正确地访问数组中的最后一个索引并将其计数下来?因为它没有运行,请让我知道我做错了什么。这是我的代码:
var usersWord = prompt("Enter a Palindrome");
var lettersArray =usersWord.split(""); // this is the array
for(var i=0; lettersArray.length < 11; i++) {
if((letters[i] + 1) == (lettersArray.length[i]-1)) {
alert("is palindrome");
} //end if statement
else{
alert("is not palindrome");
} // end else statement
} // end for statement
答案 0 :(得分:2)
您的代码的问题在于您在检查每个字符后报告结果;但是,如果不检查每个字符,我们无法判断一个单词是否是回文。以下功能可能更符合您的要求。
function checkPalindrome(word) {
var len = word.length;
for (var i = 0; i < (len / 2); i++) {
if (word.charAt(i) !== word.charAt(len - 1 - i))
return false;
}
return true;
}
需要注意的另一个要点是,您应该检查word.length / 2
,而不是根据用作输入的单词而改变的任意数字11
。另请注意,word.length / 2
是一个优化案例。循环也可以一直运行到字长,但是当last char == first char
first char == last char