Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Note: For the purpose of this problem, we define empty string as valid palindrome.
Example 1:
Input: "A man, a plan, a canal: Panama" Output: true
Example 2:
Input: "race a car" Output: false
这个题要小心全是符号的情况,还有就是其中有数字的情况。这里只是判断字母,遇到数字跳过
isalnum()函数可以判断一个字符是不是 字母或者数字
代码:
class Solution {
public:
bool isPalindrome(string s) {
if(s.length() == 0 || s.length() == 1)
return true;
transform(s.begin(),s.end(),s.begin(),towlower);
int i = 0;
int j = s.length()-1;
while(i<j){
while(!isalnum(s[i]) && i<j)i++;
while(!isalnum(s[j]) && i<j)j--;
if(s[i]==s[j]){
i++;
j--;
}else
return false;
}
return true;
}
};