问题描写叙述

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;
}
};