验证回文串
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
字母和数字都属于字母数字字符。
思路:
- 给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。
- 先用正则表达式处理字符串,替换
/[^a-zA-Z0-9]/g
所有非字母和数字,/\s/g
所有空格为""
- 然后统一转为大写或者小写
- 设2个指针
i
和j
,一个从0开始,一个从处理后的字符串最后开始 - 用
while
迭代,一个增加一个减少,当他们碰头的时候结束迭代 -
s[i]!=s[j]
就返回false
跳出迭代,全部迭代完都相等返回true
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function(s) {
s=s.replace(/[^a-zA-Z0-9]/g,"").replace(/\s/g,"").toLowerCase();
let i=0,j=s.length-1;
while(i<j){
if(s[i]!=s[j]){
return false;
}
i++;
j--;
}
return true;
};