题目描述:
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
解题分析:
采用双指针的思想,依次判断,遇到非字母和数字字符需跳过。可以使用 isalnum 判断字符是否是字母或数字,使用 tolower 将大写转小写。
class Solution {
public:
bool isPalindrome(string s) {
int left=0, right=s.size()-1;
while(left<right){
while(left<right && !isalnum(s[left])){
left++;
}
while(left<right && !isalnum(s[right])){
right--;
}
if(tolower(s[left]) != tolower(s[right])){
return false;
}
else{
left++;
right--;
}
}
return true;
}
};