125. 验证回文串
class Solution {
public:
bool isPalindrome(string s) {
int left = 0,right = s.size()-1;
while(left<right)
{
if(!isAlphaNum(s[left]))
++left;
else if(!isAlphaNum(s[right]))
--right;
//记住这个公式吧,没毛病!!!
//如何是‘A’或者‘a’的话,它们减去‘a’得到的数分别是:-32和0,再加上32的话正好是0和32,除以32——余数都为0
//如何是‘B’或者‘b’的话,它们减去‘a’得到的数分别是:-31和1,再加上32的话正好是1和33,除以32——余数都为1
else if((s[left] -'a'+ 32 )%32 != (s[right] -'a'+ 32)%32)
return false;
else
{
++left;
--right;
}
}
return true;
}
bool isAlphaNum(char &ch)
{
if(ch >='a' && ch <='z')
return true;
if(ch >='A' && ch <='Z')
return true;
if(ch >='0' && ch <='9')
return true;
return false;
}
};