[leetcode刷题系列]Valid Palindrome

来源:互联网 发布:sco unix 网络配置 编辑:程序博客网 时间:2024/05/06 06:29

模拟, 也许算是所谓的two pointers

class Solution {    bool isok(char c){        return c >= '0' && c <= '9' || c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';     }    char getLow(char c){        if(c >= 'A' && c <= 'Z')            return c - 'A' + 'a';        return c;    }public:    bool isPalindrome(string s) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        int left = 0, right = s.size() - 1;        while(left < right){            while(left < right)                if(!isok(s[left])) ++ left; else break;            if(left >= right)                return true;            while(left < right)                if(!isok(s[right])) -- right; else break;            if(right <= left)                return true;            char leftc = getLow(s[left]);            char rightc = getLow(s[right]);            if(leftc != rightc)                return false;            ++ left;            -- right;        }        return true;    }};


原创粉丝点击