详细思路

双指针,向中间,都一步如果不是那些再补上一步,判断
 
精确定义
left需要
right需要
class Solution {
public:
    bool isPalindrome(string s) {
        int n=s.size();
        int left=0,right=n-1;
        while(left<right){
            while(left<n&&!isok(s[left]))left++;
            while(right>=0&&!isok(s[right]))right--;
            if(left>=right)return true;
            if(s[left]!=s[right]&&toupper(s[left])!=toupper(s[right]))return false;
            left++,right--;
        }
        return true;
    }
    bool isok(char c){
        if(c>='a'&&c<='z'||c>='A'&&c<='Z'||c>='0'&&c<='9')return true;
        else return false;
    }
};

踩过的坑
if(s[left]!=s[right]&&toupper(s[left])!=toupper(s[right]))return false;
如果不相等,且大写也不相等,就是错的,否则,先Aa是虽然不

 

posted on 2021-08-02 21:13  offer快到碗里来~  阅读(39)  评论(0)    收藏  举报