
所谓回文串 就是比如 “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
}
网友评论