我必须编写一个脚本来检查用户输入的单词是否是回文。我已经验证了该单词并显示了字符数。也不应该使用相反的方法。
我查看了这里的一些示例,认为我需要将用户输入转换为字符串并使用“for”循环和 if/else 语句。但是如何将用户输入转换为字符串以便检查每个字符?这完全是一团糟,但这是我到目前为止所得到的一切:
function checkWord(userWord3) {
var answer = "Your word is";
answer += retrieveWord(userWord3);
return (answer);
}
function retrieveWord(userWord) {
var string = userWord;
var i = userWord.length;
for(var i = 0; i < str.length / 2; i++) {
alert(str[i], str[str.length -i -1]);
if( str[i] != str[str.length - i -1] ) {
return false;
}
}
}
最佳答案
你可以试试这个功能
function isPalindrome(str){
if(str.length < 2) return true;
if(str[0] != str.slice(-1)) return false;
return isPalindrome(str.slice(1,-1));
}
它使用了递归,其逻辑如下 空字符串和 1 个字符的字符串被视为回文
if(str.length == 0 || str.length == 1) return true;
如果第一个和最后一个字符不同,则该单词不是回文
if(str[0] != str.slice(-1)) return false;
如果第一个和最后一个相同,则继续在剩余字符串中搜索
return isPalindrome(str.slice(1,-1));
var result = document.querySelector(".result");
var palindrome = "<span class='palindrome'>it is a palindrome</span>";
var notpalindrome = "<span class='notpalindrome'>it is NOT a palindrome</span>";
function isPalindrome(str){
if(str.length == 0 || str.length == 1) return true;
if(str[0] != str.slice(-1)) return false;
return isPalindrome(str.slice(1,-1));
}
document.querySelector("input").addEventListener("keyup", function(){
if(isPalindrome(this.value)){
result.innerHTML = palindrome;
} else {
result.innerHTML = notpalindrome;
}
})
.palindrome{color: green;}
.notpalindrome{color: red;}
<input type="text" />
<span class="result"></span>
关于Javascript 回文检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35528125/