问题描述
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 == "" ) {
return true;
}
string allAlphanumeric;
for( int i = 0; i != s.size(); ++i ) {
if( isalnum( s[i] ) ) {
allAlphanumeric.push_back( tolower( s[i] ) );
}
}
if( allAlphanumeric.size() == 1 ) {
return true;
}
bool result = true;
unsigned size = allAlphanumeric.size();
for( int i = 0; i < size / 2; ++i ) {
if( allAlphanumeric[i] != allAlphanumeric[size - i - 1] ) {
result = false;
break;
}
}
return result;
}
};