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) { if(s.empty()) return true; int sLength = s.length(); int front = -1; int rear = sLength; char cFront; char cRear; while (1) { cFront = s[++front]; cRear = s[--rear]; if(front > rear) break; if(cFront <= ‘Z‘&& cFront >=‘A‘) { cFront +=32; } if(cRear <= ‘Z‘&& cRear >=‘A‘) { cRear +=32; } while( cFront < ‘0‘ || (cFront < ‘a‘ && cFront > ‘9‘)|| cFront>‘z‘) { cFront = s[++front]; if(front >= rear) break; if(cFront <= ‘Z‘&& cFront >=‘A‘) { cFront +=32; } } while( cRear < ‘0‘ || (cRear < ‘a‘ && cRear > ‘9‘)|| cRear>‘z‘) { cRear = s[--rear]; if(front >= rear) break; if(cRear <= ‘Z‘&& cRear >=‘A‘) { cRear +=32; } } if(front >= rear) break; if(cFront!=cRear) { return false; } } return true; } };
时间: 2024-11-10 13:15:28