从字符串两边开始相向验证,遇到不是字母或者数字的字符时跳过直到遇到字母或者数字为止。接下来就和普通的回文子串验证一样了,相等继续,不相等则返回false。代码如下:
class Solution {
public:
bool isPalindrome(string s) {
int left=0;
int right=s.size()-1;
while(left<right)
{
while(left<right&&!isalnum(s[left])){
++left;
}
while(left<right&&!isalnum(s[right])){
--right;
}
if(left<right){
if(s[left]==s[right]||(tolower(s[left])==tolower(s[right]))){
++left;
--right;
}else {
return false;
}
}
}
return true;
}
};