面试经典题---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;
    }
};
相关推荐
不知名的老吴1 分钟前
机器学习评价之基础指标
人工智能·算法·机器学习
Felven1 分钟前
D. Divisible Pairs
算法
源代码杀手2 分钟前
基于ROS2+Gazebo+RIVE的40项计算机视觉前沿机器人项目(含视觉算法原理与源码获取方式)
算法·计算机视觉·机器人
.千余3 分钟前
【C++】 String 常用操作:增删查改 | 查找 | 截取 | IO
java·服务器·开发语言·c++·笔记·学习
MrZhao4003 分钟前
大模型量化到底在做什么:从浮点数表示到 Qwen FP8 实践
算法
JieE2124 分钟前
LeetCode35. 搜索插入位置:二分查找的基础与细节
javascript·算法
jelly酱7 分钟前
Qt 坐标体系入门:从 GUI 概念到坐标实践
c++
代码改善世界7 分钟前
【C++进阶】哈希表封装unordered_map和unordered_set
c++·哈希算法·散列表
c238569 分钟前
C++ lambda 表达式详细介绍
开发语言·c++
8Qi810 分钟前
LeetCode 188 & 123:股票买卖问题(限制交易次数)—— 联合题解
算法·leetcode·职场和发展·动态规划