前后同时扫描
class Solution {
public:
bool isPalindrome(string s) {//只考虑字母数字,并忽略大小写
transform(s.begin(),s.end(),s.begin(),::tolower);//转为小写
auto left=s.begin(),right=prev(s.end());
while(left<right){
if(!::isalnum(*left)){//不是字母数字
++left;
}else if(!::isalnum(*right)){//不是字母数字
--right;
}else if(*left!=*right){//不是回文
return false;
}else{//相等
++left;
--right;
}
}
return true;
}
};

本文介绍了一个利用前后同时扫描的方法来检查字符串是否为回文的算法实现,该算法只考虑字母数字字符,并忽略大小写。通过将输入字符串转换为小写并去除非字母数字字符,算法在双指针技巧的帮助下,从两端向中间遍历,判断字符串是否为回文。

277

被折叠的 条评论
为什么被折叠?



