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.
丑陋AC代码
class Solution {
public:
bool isPalindrome(string s){
if(s.empty())
return true;
int start = 0, end = s.size() - 1;
while(start < end){
if(!((s[start] >= 'A' && s[start] <= 'Z') || (s[start] >= 'a' && s[start] <= 'z') || (s[start] >= '0' && s[start] <= '9'))){
start++;
continue;
}
if(!((s[end] >= 'A' && s[end] <= 'Z') || (s[end] >= 'a' && s[end] <= 'z') || (s[end] >= '0' && s[end] <= '9'))){
end--;
continue;
}
if(!(s[start] == s[end] || ( s[start] - s[end] == 'A' - 'a' || s[end] - s[start] == 'A' - 'a'))){
return false;
}
start++;
end--;
}
return true;
}
};