class Solution {
public:
bool isPalindrome(string s) {
//"0P"这类的测试用例,恰好碰上了这个解法的漏洞,即刚好ascii也相差32,会被判为正确,所以需要额外判断
int start=0;
int end=s.size()-1;
while(start<end)
{
if(JudgeEffectiveness(s[start])!=true)
{
start++;
continue;
}
if(JudgeEffectiveness(s[end])!=true)
{
end--;
continue;
}
if(s[start]<=57||s[end]<=57)
{
if(s[start]!=s[end])
return false;
}
else if(s[start]!=s[end]&&abs(s[start]-s[end])!=32)
return false;
start++;
end--;
}
return true;
}
bool JudgeEffectiveness(char c){
if(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)
return true;
return false;
}
};