题目:
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,
"A man, a plan, a canal: Panama"
is a palindrome.
"race a car"
is not a palindrome.
Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.
For the purpose of this problem, we define empty string as valid palindrome.
代码如下:
bool isPalindrome(string s) {
int n=s.length()-1;
int i=0;
bool flag=true;
while(i<n)
{
while(i<n)
{
if(s[i]-'0'>=0&&'9'-s[i]>=0)
{
break;
}
else if(s[i]-'a'>=0&&'z'-s[i]>=0)
{
break;
}
else if(s[i]-'A'>=0&&'Z'-s[i]>=0)
{
s[i]+=32;//转为小写字母
break;
}
else
{
i++;
}
}
if(i==n)break;
while(i<n)
{
if(s[n]-'0'>=0&&'9'-s[n]>=0)
{
break;
}
else if(s[n]-'a'>=0&&'z'-s[n]>=0)
{
break;
}
else if(s[n]-'A'>=0&&'Z'-s[n]>=0)
{
s[n]+=32;
break;
}
else
{
n--;
}
}
if(i==n)break;
if(s[i]==s[n])
{
i++;
n--;
}
else
{
flag=false;
break;
}
}
return flag;
}