Javascript 回文逻辑

标签 javascript palindrome

我检查了这个线程:Palindrome check in Javascript但我更希望修复我自己的算法。我现在只是在线编程,所以我无法访问好的调试器。因此,如果发现任何提示/调试问题,我们将不胜感激。这是代码:

function isPalindrome(str) {
if(str !== null && str !== undefined && str !== NaN) {
 var strStripped = str.replace(/[\.,-\/#!$%\^&\*;:{}=\-_`~()@]/g,"");
 var strSqueezed = strStripped.replace(/ /g, "");
 var i, k;
 k = str.length-1;
 var numOfValidComparisons = 0;
  for(i=0; i<strSqueezed.length; i++) {
   if(strSqueezed.charAt(i) === strSqueezed.charAt(k)) {
     numOfValidComparisons++;
   }
   k--;
  }
 if(numOfValidComparisons === strSqueezed.length)
   return true;
 else
   return false;
   }
  return false;
}

我已经在纸上写下了循环比较逻辑,但一时感到困惑。如果您不熟悉这里的回文是什么:http://en.wikipedia.org/wiki/Palindrome

我现在正在使用的测试是这个字符串 "race car"(在纸面上看起来很棒)

最佳答案

k = str.length-1;

应该是

k = strSqueezed.length-1;

就是这样。

https://jsfiddle.net/aejmjsqk/

关于Javascript 回文逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29288486/

相关文章:

javascript - 函数与全局变量的配合是否像局部变量一样好?

javascript - 增加随机化的权重

javascript - 未捕获的安全错误 : Failed to execute 'getImageData' on 'CanvasRenderingContext2D' :

C:回文:不同的strlen值

algorithm - 计算给定整数序列中的双回文数

c++ - 给定上半部分在 C++ 中创建回文的好方法

javascript - 返回后 JS 异步做事

javascript - React Router 的 ES6 导入错误

c - 使用 c 得出下一个小于 k 的回文

c - 在二维矩阵(水平、垂直、对角线)中查找回文