力扣链接:125.验证回文串
难度:⭐
解题关键词:双指针
解题思路:前后指针,如果碰到非数字字母的,跳过,对比前后两个字母,不相等的话就直接返回 false,如果相等继续对比。
typescript
function isPalindrome(s: string): boolean {
let left = 0;
let right = s.length - 1;
while (left <= right) {
if (!isValid(s[left])) {
left++;
continue;
} else if (!isValid(s[right])) {
right--;
continue;
} else if (s[left].toLowerCase() !== s[right].toLowerCase()) {
return false;
}
// 前后相等,前后指针都移动
left++;
right--;
}
return true;
}
// 如果是字母/数字就是合法的
const isValid = (char: string) => {
return /[a-z]|[0-9]/i.test(char);
};