面试经典题---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;
    }
};
相关推荐
Bmob后端云4 分钟前
Bmob后端云实战|Python给备忘录接入AI摘要、文本润色功能
算法·github
小鱼干..15 分钟前
CTFHub技能树-ssrf-URL Bypass
算法
蒸蒸yyyyzwd21 分钟前
与Redis和MySQL有关的知识
c++·求职招聘·八股
欧特克_Glodon29 分钟前
OpenCV计算机视觉开发入门与实践<四十>:自动识别物体数量
c++·人工智能·opencv·计算机视觉
chushiyunen33 分钟前
动态规划、贪心算法、分治法
算法·贪心算法·动态规划
wuminyu34 分钟前
Kafka利用sendfile与Page Cache实现高性能传输剖析
java·linux·c语言·jvm·c++
hansang_IR35 分钟前
【题解】P4456 [CQOI2018] 交错序列(数学递推)
c++·算法
流浪00137 分钟前
大厂 C/C++ 2023–2025 面试答案题汇总
开发语言·c++
青少儿编程课堂39 分钟前
贪心算法进阶:区间调度与最少资源整合解析
c++·python·算法·贪心·信息学竞赛·区间调度
(Charon)44 分钟前
【C++】 定时器入门:从定时任务到 epoll 驱动
开发语言·c++