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.
class Solution {
public:
bool isPalindrome(string s) {
int i=0,j=s.size()-1;
while(i<=j)
{
if(!isAlpha(s[i]))
{
i++;
continue;
}
if(!isAlpha(s[j]))
{
j--;
continue;
}
if(s[i]!=s[j])
return false;
i++;
j--;
}
return true;
}
bool isAlpha(char &c)
{
if('A'<=c&&c<='Z')
{
c = c-'A'+'a';
return true;
}
return ('a'<=c&&c<='z')||('0'<=c&&c<='9');
}
};
网友评论