题目描述:
给定一个字符串 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 l=0,r=s.size()-1;
while(l<=r)
{
while((l<s.size())&&(s[l]<'0'||(s[l]<'A'&&s[l]>'9')||(s[l]>'Z'&&s[l]<'a')||s[l]>'z'))
l++;
while((r>=0)&&(s[r]<'0'||(s[r]<'A'&&s[r]>'9')||(s[r]>'Z'&&s[r]<'a')||s[r]>'z'))
r--;
if(l>r)
break;
if(abs(s[l]-s[r])!=0&&abs(s[l]-s[r])!=32)
return false;
else
{
if((abs(s[l]-s[r])==32)&&(s[l]<='9'||s[r]<='9'))
return false;
}
l++;
r--;
}
return true;
}
};