Javascript Palindrome逻辑

时间:2015-03-26 20:43:46

标签: 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"(在纸上看起来很棒)

1 个答案:

答案 0 :(得分:1)

k = str.length-1;

应该是

k = strSqueezed.length-1;

多数民众赞成。

https://jsfiddle.net/aejmjsqk/