判断一个字符串是否是一个回文串

2019-11-22  本文已影响0人  infi_
TIM截图20191122144218.png

所谓回文串 就是比如 “oppo” “vivo” “987789” “234aa4 3%2” 这里的回文串要求是忽略大小写 忽略掉特殊字符和空格

我给的思路就是 设定一个left和right 分别从左右两端往中心进行比较

第一步先写一个忽略特殊字符和空格的函数

function isALpha(str){
    var roles1=/^[0-9]/
    var roles2=/^[A-Z]/
    var roles3=/^[a-z]/
    if(new RegExp(roles1,"g").test(str)){
      return true
    } 
    if(new RegExp(roles2,"g").test(str)){
      return true
    }
    if(new RegExp(roles3,"g").test(str)){
      return true
    }
 return false
}

第二步 再写一个左右两边 往中间对比的函数

function judge(str){
     var length=str.length;
     if(length<1){
       return true
     }
     var left=0;              // 从左右两边开始往中间对比
     var right=length-1;
     while (left<right) {
        if(!isALpha(str[left])){  //如果遇到空格和特殊字符 忽略
           left++
        }else if(!isALpha(str[right])){  //如果遇到空格和特殊字符 忽略
          right--
        }else if(str[left].toLowerCase()!==str[right].toLowerCase()){
          return false
        }else{
          left++
          right--
        }
      }

    return true
}


上一篇 下一篇

猜你喜欢

热点阅读