给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama" 输出: true
示例 2:
输入: "race a car" 输出: false
class Solution {
public:
bool isPalindrome(string s) {
int len = s.size();
int left = 0, right = len-1;
while (left < right){
if (!isAlphaNum(s[left]))
left++;
else if (!isAlphaNum(s[right]))
right--;
else if((s[left] +32 -'a')%32 != (s[right] +32 -'a')%32)
return false;
//这里考虑到大小写,所以直接这样用assic进行比较.这里%32表示大小写的assic 32是一个循环
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;
}
};