125. 验证回文串

题目描述

点这里

思路分析

双指针/枚举
前后两个指针,跳过不合法字符,然后对比字符,移动指针即可。

代码实现

class Solution {
public:
    bool isPalindrome(string s) {
        int l=0,r=s.size()-1;
        bool res=true;
        while(l<r){
            while(l<s.size()&&!isalpha(s[l])&&!isdigit(s[l])) l++;
            while(r>=0&&!isalpha(s[r])&&!isdigit(s[r])) r--;
            bool eql=isdigit(s[l])&&isdigit(s[r])&&s[l]==s[r]||isalpha(s[l])&&isalpha(s[r])&&(tolower(s[l])==tolower(s[r]));
            if(l>=r) break;
            else if(!eql){
                res=false;
                break;
            }
            l++,r--;
        }
        return res;
    }
};

版权声明:本文为qq_50757994原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。