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; } };