# 125. 验证回文串
# 题目
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama" 输出: true
示例 2:
输入: "race a car" 输出: false
# 题解
# 预处理 + 判断
先把除了字母和数字以外的字符去掉,然后再判断是否是回文,
# 双指针
头尾开始双指针遍历,遇到不是字母和数字的就跳过
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function(s) {
for (let i = 0, j = s.length - 1; i < j; ++i, --j) {
while (!/[a-zA-Z0-9]/.test(s[i])) {
i++;
}
while (!/[a-zA-Z0-9]/.test(s[j])) {
j--;
}
if (i > j) break;
if (s[i].toLowerCase() != s[j].toLowerCase()) return false;
}
return true;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17