1、先将字符串中的大写字母变成小写字母, 再用两个指针i和j分别从字符串开头和结尾开始相向迭代,如果遇到非字母和数字字符则跳过,然后判断i和j指针所指向的字符是否相等,不相等则返回false,如果一直相等,则返回true。
class Solution {
public:
bool isPalindrome(string s) {
int thesize=s.size();
mystrlwr(s);
int i=0,j=thesize-1;
while(i<j)
{
while(i<j&&!((s[i]>=97&&s[i]<=122)||(s[i]>=48&&s[i]<=57))) ++i;
while(i<j&&!((s[j]>=97&&s[j]<=122)||(s[j]>=48&&s[j]<=57))) --j;
if(s[i]!=s[j]) return false;
++i;
--j;
}
return true;
}
void mystrlwr(string& s)
{
int thesize=s.size();
for(int k=0;k<thesize;++k) if(s[k]>=65&&s[k]<=90) s[k]+=32;
}
};