Palindrome程序避免空格,Javascript中的标点符号

时间:2014-12-02 13:03:56

标签: javascript

我尝试使用javascript创建一个回文程序,即使字符串有标点符号,也会通过 TRUE FALSE 显示字符串是否为回文结构和空间(女士,我是亚当)。但是每当我输入一个字符串时,无论字符串是什么,我都只能得到 TRUE 。这是我的代码,

function isPalindrome (str) {
    var nopunctuation = str.replace(/[\.,-\/#!$%\^&\*;:{}=\-_`~()]/g,"");
    var nospaces = nopunctuation.replace(/\s/g,"");
    var finalstring = nospaces;

    var len = finalstring.length;
    for ( var i = 0; i < Math.floor(finalstring/2); i++ ) {
        if (finalstring[i] !== finalstring[len - 1 - i]) {
            return false;
        }
    }
    return true;    
}

console.log(isPalindrome("madam i'm adam"));

我的代码有什么问题吗?需要注意的是,我不允许使用任何内置或库功能。你的帮助会非常明显。 TNX。

1 个答案:

答案 0 :(得分:2)

在&#34; for&#34;子句,替换&#34; Math.floor(finalstring / 2)&#34; by&#34; Math.floor(len / 2)&#34;

另外,您可能希望改进标点符号删除,以便它也删除撇号。

所以你的代码会变成以下内容:

function isPalindrome (str) {
  var nopunctuation = str.replace(/\W/g,"");
  var nospaces = nopunctuation.replace(/\s/g,"");
  var finalstring = nospaces;

  var len = finalstring.length;
  for ( var i = 0; i < Math.floor(len/2); i++ ) {
    if (finalstring[i] !== finalstring[len - 1 - i]) {
      return false;
    }
  }
  return true;    
}