面试经典题---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;
    }
};
相关推荐
LG.YDX6 分钟前
笔试训练48天:倒置字符串
数据结构
智者知已应修善业9 分钟前
【51单片机独立按键控制往复流水灯启停】2023-6-13
c++·经验分享·笔记·算法·51单片机
pen-ai16 分钟前
MAD(Median Absolute Deviation)详解:最稳健的尺度估计方法
人工智能·算法
t***54421 分钟前
这些设计模式在现代C++中如何应用
java·c++·设计模式
t***54421 分钟前
能否给出更多现代C++架构设计模式?
java·开发语言·c++
励志的小陈28 分钟前
数据结构--队列(C语言实现)
c语言·开发语言·数据结构
mjhcsp33 分钟前
C++信息论超详解析
开发语言·c++
此生只爱蛋37 分钟前
【CAD】Parasolid:CAD的os
c++
無限進步D38 分钟前
Java 基础算法训练
java·开发语言·算法·入门
门左有棵树1 小时前
蓝桥杯C++组算法知识点整理(考前急救)
c++·算法·蓝桥杯