面试经典题---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;
    }
};
相关推荐
2501_945424802 分钟前
C++与硬件交互编程
开发语言·c++·算法
2301_818419012 分钟前
C++中的表达式模板
开发语言·c++·算法
Roselind_Yi3 分钟前
排查Visual C++堆损坏(HEAP CORRUPTION)错误:从报错到解决的完整复盘
java·开发语言·c++·spring·bug·学习方法·远程工作
_日拱一卒14 分钟前
LeetCode:三数之和
算法·leetcode·排序算法
cm65432018 分钟前
C++中的原型模式变体
开发语言·c++·算法
☆56621 分钟前
C++中的策略模式进阶
开发语言·c++·算法
苏纪云23 分钟前
【蓝桥杯】——>STL、基本数学
c++·蓝桥杯
dazzle24 分钟前
机器学习算法原理与实践-入门(七):深度学习框架PyTorch的Tensor
深度学习·算法·机器学习
Yupureki25 分钟前
《Linux系统编程》15.进程间通信-管道
linux·运维·服务器·c语言·c++
zbdx不知名菜鸡25 分钟前
SwanLab 在监控什么?
人工智能·算法·机器学习