# 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