面试经典题---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;
    }
};
相关推荐
糖果豆豆3 小时前
对象是字段,还是关系?集合论和范畴论吵了三十年,答案是两个都对
算法·架构
JMchen3 小时前
实战项目一——实现一个高性能图片滤镜App
android·c++·性能优化
第六种自由3 小时前
[路飞]_Leetcode 22. 括号生成
javascript·算法·leetcode
isyoungboy3 小时前
事件驱动状态机与循环扫描状态机:两种计算模型的比较研究
算法·状态机
行者全栈架构师4 小时前
【鸿蒙心迹】从手机到平板、折叠屏——多端适配自查清单与踩坑实录(HarmonyOS 7.x)
前端·算法·架构
码匠许师傅4 小时前
【C++三方组件】libpqxx:PostgreSQL 的 C++ 客户端
开发语言·c++·postgresql
H.莓飛4 小时前
【C++】内存管理
linux·开发语言·jvm·c++·visual studio
longlongzihan4 小时前
LeetCode 24.两两交换链表中的节点:虚拟头结点与指针
算法·leetcode·链表
residual_fan4 小时前
基于控制感知域对抗网络的变工况故障诊断:从控制系统与运行状态协同的角度建立模型
人工智能·算法·数据挖掘·数据分析
心仪久了会沦陷4 小时前
C语言数据结构入门——队列补充:循环队列的数组实现
c语言·开发语言·数据结构·笔记