问题描述
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; } };
原文:http://blog.csdn.net/senlinzm/article/details/38965125