回文字符串判断

A palindrome is a word, phrase, number, or other sequence of symbols or elements, whose meaning may be interpreted the same way in either forward or reverse direction. Famous examples include "Amore, Roma", "A man, a plan, a canal: Panama" and "No 'x' in 'Nixon'". - wikipedia

如果一个字符串(忽略标点符号、大小写和空格)正着读和反着读一模一样,那么这个字符串就是palindrome(回文)。

栗子:

"Amore, Roma" => valid
"A man, a plan, a canal: Panama" => valid
"No 'x' in 'Nixon'" => valid
"Abba Zabba, you're my only friend" => invalid

方案一:

function isPalindrome(line) {  
    line += "";  
    return line === line.split("").reverse().join("");  
} 

方案二:

function isPalindrome(line) {  
    line += "";  
    for(var i=0,j=line.length-1;i<j;i++,j--){  
        if(line.charAt(i) !== line.charAt(j)){  
            return false;  
        }  
    }  
    return true;  
}  

方案三:

function isPalindrome(str) {
    str = str.replace(/W/g, '').toLowerCase();
    return (str == str.split('').reverse().join(''));
}

//W: 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。

方案四:

function palindrome(string) {
  var sanitized = string.replace(/[^A-Za-z]/g, "").toLowerCase();
  return sanitized == sanitized.split("").reduceRight(function(sum, v) {return sum + v;});
}

方案五:

function palindrome(string) {
  var s = string.replace(/[^A-Za-z0-9]/g, "").toLowerCase();
  for (var i = 0; i < s.length/2; i++) if (s[i] != s[s.length-i-1]) return false;
  return true;
}

方案六:

function palindrome(string) {
  var s = string.toLowerCase().replace(/[^a-z0-9]+/g, '');
  return s == s.split('').reduce(function(str, value) {
    return value+str;
  }, '');
}

方案七:

function palindrome(string) {
  return string.toLowerCase().replace(/[^a-z]/gi,'').split('').every(function(a,b,c){
    return a===c[c.length-b-1]
  })
}

方案八:

function palindrome(string) {
  return string
    .toLowerCase()
    .replace(/[^a-z]/g,'')
    .split("")
    .every(function(v, i, array){ return v == array[array.length-i-1] })
  ;
}

参考:

https://github.com/dwqs/awesome-codewars/blob/master/codewars/palindrome-for-your-dome.md

原文地址:https://www.cnblogs.com/xmyun/p/8340161.html