题目描述
给定一个字符串 s
,验证 s
是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。
本题中,将空字符串定义为有效的 回文串 。
样例输入
示例 1:
输入: s = "A man, a plan, a canal: Panama" 输出: true 解释:"amanaplanacanalpanama" 是回文串
示例 2:
输入: s = "race a car" 输出: false 解释:"raceacar" 不是回文串
提示:
1 <= s.length <= 2 * 105
- 字符串
s
由 ASCII 字符组成
代码
class Solution {
public:
bool isPalindrome(string s) {
int i=0,j=s.size()-1;
while(i<j)
{
while (i < j && !isalnum(s[i])) i++; // 找到第一个字母或数字
while (i < j && !isalnum(s[j])) j--; // 找到最后一个字母或数字
if(tolower(s[i])==tolower(s[j]))
{
i++;
j--;
}else{
return false;
}
}
return true;
}
};