Valid Palindrome

Description:

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.

Code:

 1  bool isPalindrome(string s) {
 2         int p = 0;
 3         int q = s.length()-1;
 4       
 5         while ( p <= q )
 6         {
 7             while ( !isalnum(s[p]) && p < q)
 8                 ++p;
 9             while ( !isalnum(s[q]) && p < q)
10                 --q;
11                 
12             if ( p > q )
13                 break;
14                 
15             s[p] = isupper(s[p]) ? tolower(s[p]) : s[p];
16             s[q] = isupper(s[q]) ? tolower(s[q]) : s[q];
17             
18             if ( s[p] != s[q] )
19                 return false;
20             else
21             {
22                 ++p;
23                 --q;
24             }
25         }
26         return true;
27     }

 

posted @ 2015-06-21 16:27  Rosanne  阅读(181)  评论(0编辑  收藏  举报