【蓝桥杯Day1】:LCR 018. 验证回文串,left++<right--?

1:isalnum() 函数说明:

检查参数c,是否为英文字母或阿拉伯数字。

2.int toupper( int c),toupper():将字母转位大写。

3.int tolower( int c),tolower():将字母转为小写。

下面是我自己写的,感觉写的有点搓。

特别注意的就是,在判断是否满足是字母或者数字的时候,可能就会发生left小于right,然后这样就是错的,不满足题意的,应该返回true。所以就要判断一下。

cpp 复制代码
class Solution {
public:
    bool is_num(string& s,int n)
    {
        char c=s[n];
        if(c>='a'&&c<='z')
        {
            s[n]+='A'-'a';
            return true;
        }
            
        else if(c>='A'&&c<='Z')
            return true;
        else if(c>='0'&&c<='9')
            return true;
        return false;
    }

    bool isPalindrome(string s) {
        int left=0,right=s.size()-1;
        while(left<right)
        {
            while(!is_num(s,left)&&left<s.size()-1)  left++;
            while(!is_num(s,right)&&right>0)   right--;
            if(s[left]!=s[right])   break;
            left++;
            right--;
        }
        if(left>=right)
            return true;
        else
            return false;
    }
};

然后就是用函数的,我都没见过这种,属实是2G网络。

cpp 复制代码
class Solution {
public:
    bool isPalindrome(string s) {
        string sgood;
        for(auto& c:s)
        {
            if(isalnum(c))
                sgood+=tolower(c);
        }
        string sgood_r(sgood.rbegin(),sgood.rend());
        return sgood==sgood_r;
    }
};

直接逆转一下然后判断的代码少。但是还是练一下双指针吧。

哎,把++,--放whie右边括号,不对哈,虽然左边先判断--,然后再咋样,就是不应该哈。

cpp 复制代码
class Solution {
public:
    bool isPalindrome(string s) {
        string sgood;
        for(auto& c:s)
        {
            if(isalnum(c))
                sgood+=tolower(c);
        }
        int left=0,right=sgood.size()-1;
        while(left<right)
        {
            if(sgood[left]!=sgood[right])
                return false;
            ++left;
            --right;
        }
        return true;
    }
};
相关推荐
慧翔天地人才发展学苑4 小时前
大厂 | 华为半导体业务部2026届秋招启动
华为·面试·职场和发展·跳槽·求职招聘·职场晋升
程序员三藏5 小时前
Selenium+python自动化测试:解决无法启动IE浏览器及报错问题
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
黑客影儿10 小时前
黑客哲学之学习笔记系列(三)
笔记·学习·程序人生·安全·职场和发展·网络攻击模型·学习方法
熬了夜的程序员10 小时前
【LeetCode】16. 最接近的三数之和
数据结构·算法·leetcode·职场和发展·深度优先
Miraitowa_cheems10 小时前
LeetCode算法日记 - Day 15: 和为 K 的子数组、和可被 K 整除的子数组
java·数据结构·算法·leetcode·职场和发展·哈希算法
火车叨位去19492 天前
力扣top100(day04-05)--堆
算法·leetcode·职场和发展
qq_513970443 天前
力扣 hot100 Day76
算法·leetcode·职场和发展
程序员曦曦3 天前
10:00开始面试,10:06就出来了,问的问题有点变态。。。
自动化测试·软件测试·功能测试·程序人生·面试·职场和发展
是乐谷3 天前
阿里云杭州 AI 产品法务岗位信息分享(2025 年 8 月)
java·人工智能·阿里云·面试·职场和发展·机器人·云计算
天才测试猿3 天前
常见的Jmeter压测问题
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·压力测试