「每日LeetCode」2022年8月2日

本文最后更新于:2023年3月19日 晚上

125.验证回文串

125.验证回文串

Category Difficulty Likes Dislikes
algorithms Easy (46.90%) 555 -

Tags
Companies
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:
输入: “A man, a plan, a canal: Panama” 输出: true 解释:“amanaplanacanalpanama” 是回文串
示例 2:
输入: “race a car” 输出: false 解释:“raceacar” 不是回文串

提示:

  • 1 <= s.length <= 2 * 105
  • 字符串 s 由 ASCII 字符组成

Discussion | Solution

思路

按题意模拟即可,左右指针,找到大小写字符和数字时判断左右是否一致。

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*
* @lc app=leetcode.cn id=125 lang=javascript
*
* [125] 验证回文串
*/

// @lc code=start
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function (s) {
let left = 0,
right = s.length - 1;
const reg = /[0-9a-zA-Z]/;
while (left < right) {
while (left < right && !reg.test(s[left])) {
left++;
}
while (left < right && !reg.test(s[right])) {
right--;
}
if (s[left].toLowerCase() !== s[right].toLowerCase()) return false;
left++;
right--;
}
return true;
};
// @lc code=end