面试经典题---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;
    }
};
相关推荐
Jason_Honey217 分钟前
【蚂蚁金服Agent算法岗一面】
人工智能·算法·自然语言处理·面试
weixin_4772716919 分钟前
《老子》一书作者“李耳”简介
算法·图搜索算法
智算菩萨19 分钟前
交错多模态内容生成:从“单张图“到“图文混排长文“的创作范式变革
人工智能·算法·aigc
Flying pigs~~23 分钟前
机器学习之KNN算法
算法·机器学习·大模型·knn·k近邻算法·大数据处理
Navigator_Z32 分钟前
LeetCode //C - 962. Maximum Width Ramp
c语言·算法·leetcode
m0_6727033133 分钟前
上机练习第29天
算法
兩尛35 分钟前
409. 最长回文串
c++·算法·leetcode
(❁´◡`❁)Jimmy(❁´◡`❁)37 分钟前
【KMP】算法详解
算法
智者知已应修善业1 小时前
【pta反转加法构造回文数c语言1000位】2025-1-31
c语言·c++·经验分享·笔记·算法
List<String> error_P1 小时前
蓝桥杯基础知识点:模拟-数位操作类题目
python·算法·蓝桥杯