javascript - JavaScript 的回文问题

标签 javascript palindrome

我需要编写一个带有参数str的函数的代码,该函数评估该单词是否是回文,它应该返回true,否则应该返回返回

注意:我需要删除所有非字母数字字符。

我编写了下面的代码,但它给出的结果与预期相反:

  • 所有情况都给出错误。
  • 无法删除下划线。
  • 当在我得到的图像下方使用console.log时。

console.log result

代码:

function palindrome(str) {
  var exc = /[^\w_]/gi;
  var repStr = str.toLowerCase().replace(exc, "");
  console.log("Replaced string id: " + repStr);
  len = repStr.length -1

  for (var i = 0; i <= len; i++) {
    if (str[i] !== repStr[len] - i) {
      return false;
    }
  }
  return true;
}

console.log(palindrome("eye"));
console.log(palindrome("_eye"));
console.log(palindrome("race car"));
console.log(palindrome("not a palindrome"));
console.log(palindrome("A man, a plan, a canal. Panama"));
console.log(palindrome("never odd or even"));
console.log(palindrome("nope"));
console.log(palindrome("almostomla"));
console.log(palindrome("My age is 0, 0 si ega ym"));
console.log(palindrome("1 eye for of 1 eye."));
console.log(palindrome("0_0 (: /-\ :) 0-0"));
console.log(palindrome("five|\_/|four"));

最佳答案

您的代码中有 2 个错误。 1) RegExp 不会替换下划线,因为 [^\w_] 读作“不是单词字符或下划线的所有内容”。尝试一下

/[\W_]/g

其读作“以下之一:任何非单词字符、下划线的字符”

或者

/[^0-9a-z]/g

其读作“任何不是:数字(从 0 到 9)、英文字母”的内容。

2)要使其工作,您需要编写

if(repStr[i] !== repStr[len - i])

而不是

if(str[i] !== repStr[len] - i)

关于javascript - JavaScript 的回文问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48368412/

相关文章:

string - 查找字符串中最长的非回文子串

c - C 中的回文递归程序

javascript - 函数与变量之比的原因是什么?

javascript - 无法使用 jQuery 和 React.js 加载 data.json 文件

javascript - 如何使用 JQuery 为数组的每个值生成 HTML 元素?

python - 需要更好的逻辑来查找范围内的回文数

c# - 将完全小写/大写字符数组转换回用户输入

javascript - Apex Oracle 在 Internet Explorer 上打印

javascript - 使用 Javascript 过滤和隐藏特定的表格行

C++寻找下一个素数回文