题目链接:
思路分析:先按照题目中的要求把字符串就行修改,然后对于新的字符串,可以使用双指针的方法,两个指针分别从前往后、从后往前的进行比较,如果不相等则直接false。
算法分析:这里用到了双指针,也是一种比较常见的算法思想。
参考代码:
class Solution {
public:
bool isPalindrome(string s) {
string temp="";//temp表示修正后的字符串
int n=s.size();
for(int i=0;i<n;++i){//遍历原始字符串s
if(s[i]<='Z'&&s[i]>='A'){//是大写字母则保留
temp+=s[i];
}else if(s[i]<='z'&&s[i]>='a'){//小写字母则修改成大写字母的形式
s[i]-=32;
temp+=s[i];
}else if(s[i]<='9'&&s[i]>='0'){//数字直接添加
temp+=s[i];
}
}
n=temp.size();//n修改为新字符串的长度
for(int i=0,j=n-1;i<j;++i,--j){//双指针遍历比较一个前一个后
if(temp[i]!=temp[j])
return false;
}
return true;
}
};