面试经典题---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;
    }
};
相关推荐
小羊没烦恼!几秒前
系统内部模块(子系统)之间的耦合以及模块(子系统)划分
java·开发语言·前端·数据库·算法·c#
Nebula_g7 分钟前
JavaSE拓展:Arrays和Collections工具类
java·开发语言·算法·排序算法·工具类·javase·技术栈
菜鸟~noob23313 分钟前
【电子战】 第22篇:误差椭圆与置信区间【含matlab代码】
开发语言·算法·matlab
潼心1412o24 分钟前
C++初阶(长期更新)第5讲:类和对象(中)
开发语言·c++
weixin_3077791325 分钟前
C++代码实现MATLAB中的normalize函数功能
开发语言·c++·算法·matlab
不会就选b37 分钟前
算法日常・每日刷题--<动态规划>11
算法
(Charon)40 分钟前
【C++面试】手写String类:同时实现拷贝构造与移动构造
c++·算法
程序员老陆41 分钟前
通过std::unique_ptr初始化std::shared_ptr
开发语言·c++
迷途之人不知返1 小时前
算法系列6:模拟
算法
旺仔仔仔1 小时前
# 机器人项目实战(1):选相机、试深度,再到手眼标定
算法