给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:
输入: "race a car"
输出: false
思路
- 首先利用正则表达式将
s
中的非数字,字母替换为空后全部转成小写或大写 - 使用双指针判断首位字符是否相同
代码
var isPalindrome = function(s) {
s = s.replace(/[^a-zA-Z0-9]/g,'').toLowerCase();
let left = 0, right = s.length-1;
while(left < right) {
if(s[left] !== s[right]){
return false;
}
left++;
right--;
}
return true;
};