Javascript 回文检查

标签 javascript

我必须编写一个脚本来检查用户输入的单词是否是回文。我已经验证了该单词并显示了字符数。也不应该使用相反的方法。

我查看了这里的一些示例,认为我需要将用户输入转换为字符串并使用“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/

相关文章:

javascript - 如果 javascript 中的 block 未运行

javascript - 网站的 Javascript 变体

javascript - 类型错误 : Object doesn't support property or method 'entries' (IE11)

jquery - javascript函数引用和参数传递解释

javascript - 从脚本中排除一个 URL

javascript - 使用更多属性更新模型 (backbone.js)

javascript - 下拉菜单中的链接不起作用

javascript - ng-repeat 按 $index 跟踪并从数组中删除元素

javascript - 如何在不检查 Canvas 上的每个点的情况下获取 SVG 路径字符串中包含的所有点?

javascript - Openlayers - 禁用图层上的平移