面试经典题---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;
    }
};
相关推荐
青桔柠薯片2 分钟前
数据结构:单向链表,顺序栈和链式栈
数据结构·链表
diediedei11 分钟前
模板编译期类型检查
开发语言·c++·算法
阿杰学AI21 分钟前
AI核心知识78——大语言模型之CLM(简洁且通俗易懂版)
人工智能·算法·ai·语言模型·rag·clm·语境化语言模型
mmz120728 分钟前
分治算法(c++)
c++·算法
XiaoFan01236 分钟前
将有向工作流图转为结构树的实现
java·数据结构·决策树
一切尽在,你来43 分钟前
C++多线程教程-1.2.1 C++11/14/17 并发特性迭代
开发语言·c++
睡一觉就好了。1 小时前
快速排序——霍尔排序,前后指针排序,非递归排序
数据结构·算法·排序算法
齐落山大勇1 小时前
数据结构——单链表
数据结构
80530单词突击赢1 小时前
C++入门指南:从零到精通
开发语言·c++
Tansmjs1 小时前
C++编译期数据结构
开发语言·c++·算法