面试经典题---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;
    }
};
相关推荐
无定义_几秒前
10.11日常训练
算法
Code_Solitude几秒前
c语言:关于qsoet函数知识点
c语言·数据结构·算法
Nil20823 分钟前
leetcode 49字母异位分组
算法·leetcode·哈希算法
音草24 分钟前
C++ 继承详解:从概念到菱形继承
c++
weixin_3077791334 分钟前
C++代码实现MATLAB中的spectralcluster函数功能
开发语言·c++·算法·matlab
行者全栈架构师41 分钟前
【鸿蒙心迹】让应用“悬浮“起来——闪控球(floatingBall)从接入到实战全链路(HarmonyOS 7.x)
前端·算法·架构
云的雨 雨的云1 小时前
手写算法动画上位机:从排序到线性代数可视化
线性代数·算法
Pniubi1 小时前
快速排序(力扣基础)(递归)
java·数据结构·算法
xiaoye-duck1 小时前
《C++ 项目:手写大模型接入 SDK》Trae IDE 开发环境搭建与依赖管理
c++·ide·语言模型
roman_日积跬步-终至千里1 小时前
【数据Agent论文·分析与报告评测|27】ComInsight:原子洞察正确,组合后的结论就可靠吗?
人工智能·算法·机器学习·数据分析