zoukankan      html  css  js  c++  java
  • 回文字符串判断

    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

  • 相关阅读:
    2019 | 开启新的堕落生活
    2018博客之星评选,我非常需要您宝贵的一票!♪(・ω・)ノ
    前端开发 2018 回顾
    全栈设计模式套餐MVVM, RESTful, MVC的历史探索
    停止学习框架
    那些被浏览器阻止的模拟事件...
    Just Cause系列游戏品鉴
    GPU硬件加速原理 /转
    快速上手最棒的网格框架ag-Grid
    用户数据验证的正确姿势之assert
  • 原文地址:https://www.cnblogs.com/xmyun/p/8340161.html
Copyright © 2011-2022 走看看