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.length()==0)
return true;
int i,j;
for(i = 0,j = s.length()-1;i<j;++i,--j){
while(i < j && !isalnum(s[i]))//测试用例里有数字,所以用isalnum而不能用isalpha
++i;
while(i < j && !isalnum(s[j]))
--j;
if(tolower(s[i])!=tolower(s[j]))//别忘了转成小写比较
return false;
}
return true;
}
};