Javascript回文逻辑
Javascript Palindrome Logic
我已经检查了这个线程:Palindrome check in Javascript 但我更希望修复我自己的算法。我现在只是在线编程,所以我无法访问好的调试器。因此,如果发现任何 hints/debugging 问题,我们将不胜感激。这是代码:
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;
就是这样。
我已经检查了这个线程:Palindrome check in Javascript 但我更希望修复我自己的算法。我现在只是在线编程,所以我无法访问好的调试器。因此,如果发现任何 hints/debugging 问题,我们将不胜感激。这是代码:
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;
就是这样。