【问题标题】:How can I create a pallindrome code in JavaScript?如何在 JavaScript 中创建回文代码?
【发布时间】:2020-08-27 17:29:53
【问题描述】:

所以我正在尝试为回文创建一个代码,这就是我尝试的方式。有其他或更好的方法吗?

但现在它只显示第一个值是否相等并显示真假?

var inpo= prompt("Please enter to check if palindrome")
var inp = parseFloat(inpo)
var a = inpo.split('')
var inpo2 = a.reverse()
var len= inpo.length

for (var i =0;i< len ;i++) { 
  if (inpo[i] == inpo2[i] )
    alert("True")
  else
    alert("False")
}

【问题讨论】:

  • 您提供的输入是什么?
  • How do I ask a good question?:写一个总结问题的标题,在发布任何代码之前介绍问题,添加重现问题的minimal reproducible example。并且不要使用不必要的格式(例如,将问题中的所有内容都写成粗体)
  • 这里有很多问题。为什么使用 parseFloat()?您不再使用该值。您正在检查每个字母(如果字符串长度为奇数,则除了中间的字母)两次。那是不必要的。而不是反转字符串,只需比较原始字符串中不同位置的两个字母。

标签: javascript palindrome


【解决方案1】:

一种检查单词或整个短语是否为回文的方法:

function isPalindrome(str) {
    // Escape the string: Eliminate punctuation and spaces, enforce lower case
    let escaped = str.replace(/[^A-Za-z0-9_]/g,"").toLowerCase();
    
    // Reverse the escaped string
    let reversed = escaped.split('').reverse().join('');
    
    //compare
    return escaped == reversed;
}

console.log(isPalindrome('Level'));
console.log(isPalindrome('Red rum, sir, is murder'));

我希望 cmets 能够很好地作为解释。

另外,您在 THIS jsfiddle 中有一个 prompt 示例。

【讨论】:

    【解决方案2】:

    如果您要创建回文检查器代码,这里有一个简单的方法。拆分、反转然后加入。

    str1 = "xxaa";
    str2 = str1.split('').reverse().join("");
    
    if (str1 == str2) {
      alert("good");
    } else {
      alert("not");
    }

    【讨论】:

    • 如果您只是要发布替代解决方案,请从众多可能的重复项中选择一个并投票关闭。
    【解决方案3】:

    您可以检查字符串中的单个字符,从右侧消耗 1 个字符,从左侧消耗另一个,直到您发现字符串完成或有 2 个不相等的字符。我用经典的 for 循环实现。 请注意,字符串 [] 的括号表示法最近才受支持,如果没记错的话,您可以使用 charAt

    let inp = "otdto";
    
    console.log(isPalindrome(inp));
    
    function isPalindrome(inp) {
      const len = inp.length;
      for (let i = 0; i < Math.floor(len / 2); i++)
        if (inp[i] != inp[len - i - 1])
          return false;
    
      return true;
    }

    【讨论】:

    • “请注意,字符串 [] 的括号表示法最近才受支持” - 此功能是 ECMAScript 5 的一部分,已发布在 December 3, 2009
    猜你喜欢
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 2012-11-02
    • 2019-11-29
    • 2022-06-10
    相关资源
    最近更新 更多