面试经典题---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;
    }
};
相关推荐
无小道12 分钟前
C/C++——可变参数
c语言·开发语言·c++·可变参数
BioRunYiXue18 分钟前
科研干货 | IC50全面解读:概念解析、实验设计与数据分析要点
java·开发语言·javascript·人工智能·算法·数据挖掘·数据分析
hahaha601619 分钟前
HLS高层次综合设计技巧--UART_TX接收模块设计案例
人工智能·算法·计算机视觉
302wanger22 分钟前
一个程序员看完《逆行人生》:电影没说透的,比电影更扎心
算法
hele_two23 分钟前
C++模拟蚁群(二)
c++·算法·数学建模·图形渲染
WK100%27 分钟前
LeetCode双题:滑动窗口破解最小子数组
c++·经验分享·笔记·算法
sheeta199829 分钟前
LeetCode 每日一题笔记 日期:2026.09.02 题目:3875.构造奇偶一致的数组 I
笔记·算法·leetcode
明月_清风37 分钟前
递归算法:从原理到实战,一次讲透
后端·算法·go
@福者41 分钟前
C++ QT 入门
开发语言·c++·qt
CYLAM202542 分钟前
STC32G12K128单片机实现高精度算法及常用初等函数值的计算
算法