面试经典题---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;
    }
};
相关推荐
hanlin031 天前
刷题笔记:力扣第32题-最长有效括号
笔记·算法·leetcode
一拳一个呆瓜1 天前
【STL】文件系统导航
c++·stl
All for pursuit.1 天前
【动态规划-21】312.戳气球
数据结构·c++·算法·leetcode·动态规划
栈帧之外1 天前
【C++】STL之set
开发语言·c++
zhanghaha13141 天前
C++构造函数的一些其他应用(逐词逐句保姆讲解)
c++
jimy11 天前
c++的 Type Traits (二、更详细版本)
开发语言·c++
碧海银沙音频科技研究院1 天前
基于炬芯ATS3089X自研AEC声学回声消除算法
算法
通问AI1 天前
在两台 Mac Studio 上跑 800B 模型:MLX + RDMA over Thunderbolt 实测与四道门选型法
算法
ZywOo6231 天前
《算法竞赛进阶指南》0x03 前缀和与差分
算法
Scintilla_y1 天前
DAY2 滑动窗口
算法·leetcode·散列表