面试经典题---125.验证回文串

125.验证回文串

我的解法:

双指针法:

首先使用left和right两个指针分别指向字符串首尾;

外部while循环保证 left<right,内部分别使用while循环找出此时最左和最右的字母数字字符(使用自定义函数 isLegal 来判断字符是否是大小写字母或数字,可以直接用c++自带的isalnum函数);

比较两指针所指向字符的小写形式是否一致,不同则直接返回false;

cpp 复制代码
class Solution {
    bool isLegal(char ch){
        if((ch >= '0' && ch <= '9') ||
            (ch >= 'A' && ch <= 'Z') ||
            (ch >='a' && ch <= 'z')){
            return true;
        }
        return false;
    }
public:
    bool isPalindrome(string s) {
        int n = s.size();
        int left = 0, right = n - 1;
        while(left < right){
            while(left < right && !isLegal(s[left])){
                left++;
            }
            while(left < right && !isLegal(s[right])){
                right--;
            }
            if(left < right){
                if(tolower(s[left]) != tolower(s[right])){
                    return false;
                }
                left++;
                right--;
            }
        }
        return true;
    }
};
相关推荐
豆沙沙包?16 分钟前
C++~~~vector容器(p31-P40)
开发语言·c++
小小de风呀16 分钟前
de风——【从零开始学习C++】(十八):AVL树——让二叉搜索树自己“站起来“的自平衡黑科技
c++·科技·学习
原野池予26 分钟前
深入Java集合框架:数组与List互转底层原理剖析(JDK 8)
java·数据结构·list
牛油果子哥q35 分钟前
C++STL容器详解:vector/list/string底层扩容、迭代器失效终极解决、容器选型避坑
开发语言·c++·list
今日无bug1 小时前
列表转树:一道题搞懂 HashMap 在算法里的价值
前端·数据结构
welfare9621 小时前
新号别搞:c++类与对象
开发语言·c++
何以解忧,唯有..1 小时前
预订酒店问题
算法
No8g攻城狮1 小时前
【算法】什么是 DFS 与 BFS 及他们的区别
算法·深度优先·宽度优先
举手1 小时前
Epoll模型
linux·c++·学习
zww89491111 小时前
家政派单系统实战指南:从需求分析到智能调度算法落地
算法·需求分析