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.
本题较为简单,注意使用string提供的函数即可快速解决。值得注意的是字母的大小写问题。直接上代码。
bool isPalindrome(string s) { int len = s.size(); if(len==0) return true; for(int i=0,j=len-1;i<j;) { while( !isalpha(s[i])&& !isdigit(s[i])&& i<j) i++; while( !isalpha(s[j])&& !isdigit(s[j]) && i<j ) j--; if(i==j) return true; if( tolower(s[i]) == tolower(s[j])) { i++; j--; } else return false; } return true; }