给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: “A man, a plan, a canal: Panama”
输出: true
解释:“amanaplanacanalpanama” 是回文串
示例 2:
输入: “race a car”
输出: false
解释:“raceacar” 不是回文串
class Solution {
public:
bool isPalindrome(string s) {
int i=0;
int j = s.length()-1;
char aa,bb;
while(i<j)
{
while(!((s[i]<='z'&&s[i]>='a')||(s[i]>='0'&&s[i]<='9')||(s[i]<='Z'&&s[i]>='A'))&&i<j)
{
i++;
}
if(s[i]<='Z'&&s[i]>='A')
{
char a = s[i] + 32;
aa = a;
}else{
aa = s[i];
}
while(!((s[j]<='z'&&s[j]>='a')||(s[j]>='0'&&s[j]<='9')||(s[j]<='Z'&&s[j]>='A'))&&j>0)
{
j--;
}
if(s[j]<='Z'&&s[j]>='A')
{
char b = s[j] + 32;
bb = b;
}else{
bb = s[j];
}
if(j<i)
{
return true;
}
if(aa!=bb)
{
return false;
}
i++;
j--;
}
return true;
}
};