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.
Solution:
1 bool isAlphanumberic(char a) { 2 if(a >= 48 && a <= 57 || 3 (a >= 65 && a <= 90) || 4 (a >= 97 && a <= 122)) 5 return true; 6 return false; 7 } 8 bool isPalindrome(string s) { 9 if(s.size() == 0 ) 10 return true; 11 int start = 0; 12 int end = s.size() - 1; 13 while(start < end) { 14 if(isAlphanumberic(s[start]) && isAlphanumberic(s[end]) ){ 15 if(s[start] >= 97) 16 s[start] -= 32; 17 if(s[end] >= 97) 18 s[end] -= 32; 19 if(s[start] != s[end]) { 20 return false; 21 }else { 22 start ++; 23 end --; 24 } 25 }else if(!isAlphanumberic(s[start])){ 26 start ++; 27 }else if(!isAlphanumberic(s[end])) { 28 end --; 29 } 30 } 31 return true; 32 }