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 ischar(char & ch) { if('a' <= ch && ch <= 'z') return true; else if('0' <= ch && ch <= '9') return true; else if('A' <= ch && ch <= 'Z'){ ch += 32; return true; } else return false; } bool isPalindrome(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function int length = s.length(); if(length <= 1)return true; int begin = 0; int end = length-1; while(begin < end) { while(begin < end && !ischar(s[begin])) ++begin; while(begin < end && !ischar(s[end])) --end; if(s[begin++] != s[end--]) return false; } return true; }