双指针,主要是边界条件的判断以及字母数字的判断。
class Solution {
public:
bool isPalindrome(string s) {
if(s.size() <=1) return true;
size_t i = 0;
size_t j = s.length()-1;
while(i<j){
while(i<j && !isalnum(s[i])) i++;
while(i<j && !isalnum(s[j])) j--;
if(i >=s.size()-1 || j <= 0 ) break;
if(tolower(s[i]) != tolower(s[j])) return false;
i++; j--;
}
return true;
}
};
//isalnum(char c):判断字符变量c是否为字母或数字,若是则返回非零,否则返回零。
//tolower(char c):把字母字符转换成小写,非字母字符不做出处理。
435

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



