LeetCode125 Valid Palindrome

文章目录
  1. 1. 描述
  2. 2. 样例
  3. 3. 思路
  4. 4. 代码

描述

Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

样例

1
2
3
4
Input:
"A man, a plan, a canal: Panama"
Output:
true
1
2
3
4
Input:
"race a car"
Output:
false

思路

判断一个字符串是否是回文的,只考虑其中出现的字母、数字,并且忽略大小写。

使用双指针,$l$指向头部,$r$指向尾部,遇到非法字符则移动到合法字符为止,然后将字母转为小写进行比较。

isalnum()函数是用来判断一个字符是否是字母或数字的,tolower()则是返回一个字母的小写状态,这些函数都定义在<cctype>头文件中。

代码

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
bool isPalindrome(string s) {
int l = 0, r = s.size()-1;
while (l < r) {
while (l < r && !isalnum(s[l])) l++;
while (l < r && !isalnum(s[r])) r--;
if (tolower(s[l++]) != tolower(s[r--])) return false;
}
return true;
}
};
分享到 评论