题源:LeetCode
解析:先将字目和数字提取到提取放到原字符数组中,并将大写字母转为小写,然后使用双指针进行判断即可;
代码:
class Solution {
public:
bool isPalindrome(string s) {
int len=s.size();
if(len==0) return true;
int n=0;
for(int i=0;i<len;i++){
if('a'<=s[i]&&s[i]<='z'){
s[n++]=s[i];
}
else if('A'<=s[i]&&s[i]<='Z'){
s[n++]=s[i]+32;
}
else if('0'<=s[i]&&s[i]<='9'){
s[n++]=s[i];
}
}
for(int i=0;i<n/2;i++){
if(s[i]!=s[n-1-i]){
return false;
}
}
return true;
}
};