首页 > 其他分享 >leetcode 125. 验证回文串

leetcode 125. 验证回文串

时间:2024-12-12 19:55:55浏览次数:7  
标签:right int 125 && 回文 leetcode left

125. 验证回文串

二刷,用时3ms,内存9.81MB

一定要注意,是移除所有除了数字、字母以外的字符

class Solution {
public:
    //'a' - 'A' = 32
    bool isPalindrome(string s) {
        int left = 0,right = s.size()-1;
        while(left < right){
            while(left < right && !(s[left] >= 'a' && s[left] <= 'z' || s[left] >= 'A' && s[left] <= 'Z' || s[left] >= '0' && s[left] <= '9'))
                ++left;
            while(left < right && !(s[right] >= 'a' && s[right] <= 'z' || s[right] >= 'A' && s[right] <= 'Z' || s[right] >= '0' && s[right] <= '9'))
                --right;
            if(((s[left] <= 'Z') ? s[left]+32 : s[left]) != ((s[right] <= 'Z') ? s[right]+32 : s[right]))
                return false;
            ++left;--right;  
        }
        return true;
    }
};

两年前一刷的代码。456ms,7.14MB

class Solution {
public:
    bool isPalindrome(string s) {
        int sizes=s.size();
        for(int i=0;i<sizes;i++){
            if(!isalnum(s[i])){ //用于检查字符串是否只由字母和数字组成的函数
                s.erase(s.begin()+i);i--;sizes--;continue;
            }
            if(isupper(s[i])){//用于检查字符是否大写字母
                s[i] = s[i] + 32;
            }
        }
        if(sizes == 0)  return true;
        for(int i=0;i<sizes/2;i++){
            if(s[i]!=s[sizes-1-i])  return false;
        }
        return true;
    }
};

 

标签:right,int,125,&&,回文,leetcode,left
From: https://www.cnblogs.com/uacs2024/p/18603258

相关文章

  • 2024/12/7【哈希表】 LeetCode453 四数相加II ,知识点:defaultdict,lambda函数,dict的get
    454.四数相加II-力扣(LeetCode)代码随想录(programmercarl.com)本题解题步骤:首先定义一个unordered_map(在python中为字典),key放a和b两数之和,value放a和b两数之和出现的次数。遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中。定义int变量count,用来统计a+b+......
  • leetcode 2516. 每种字符至少取 K 个
    2516.每种字符至少取K个逆向思维:滑动窗口内的字符a最多个数为(原字符串a的个数-k),b和c同理。求出这个滑动窗口最长长度res,结果返回size-resclassSolution{public:inttakeCharacters(strings,intk){intsize=s.size(),res=0;intlette......
  • [LeetCode] 1368. Minimum Cost to Make at Least One Valid Path in a Grid 使网格图
    Givenan mxn grid.Eachcellofthegridhasasignpointingtothenextcellyoushouldvisitifyouarecurrentlyinthiscell.Thesignof grid[i][j] canbe:1 whichmeansgotothecelltotheright.(i.egofrom grid[i][j] to grid[i][j+1])......
  • 1321. 餐馆营业额变化增长 - 力扣(LeetCode)
    1321.餐馆营业额变化增长-力扣(LeetCode)目标输入输入:营业额customer_idnamevisited_onamount1Jhon2019/1/11002Daniel2019/1/21103Jade2019/1/31204Khaled2019/1/41305Winston2019/1/51106Elvis2019/1/61407Anna2019/1/71508Maria2019/1/8809Jaze2019/1/91101Jhon2019......
  • 1341. 电影评分 - 力扣(LeetCode)
    1341.电影评分-力扣(LeetCode)目标输入输入:评分表movie_iduser_idratingcreated_at1132020/1/121242020/2/111322020/2/121412020/1/12152020/2/172222020/2/12322020/3/13132020/2/223242020/2/25输入:用户表user_idname1Daniel2Monica3Maria4James输入:电影表movie......
  • 626. 换座位 - 力扣(LeetCode)
    626.换座位-力扣(LeetCode)目标输入输入:座位表idstudent1Abbot2Doris3Emerson4Green5Jeames输出输出:新座位表idstudent1Doris2Abbot3Green4Emerson5Jeames分析编写解决方案来交换每两个连续的学生的座位号。如果学生的数量是奇数,则最后一个学生的id不交换。按id......
  • LeetCode - Hot100 - 1.两数之和
    前言本专栏主要通过“LeetCode热题100”,来捡起自己本科阶段的算法知识与技巧。语言主要使用c++/java。题目描述1.两数之和题目链接:https://leetcode.cn/problems/two-sum/?envType=study-plan-v2&envId=top-100-liked给定一个整数数组nums和一个整数目标值target,......
  • LeetCode | 斐波那契数
    Problem:509.斐波那契数题目斐波那契数(通常用F(n)表示)形成的序列称为斐波那契数列。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。也就是:F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2),其中n>1给定n,请计算F(n)。示例1:输入:n=2输出:1解......
  • (nice!!!)(LeetCode 热题 100) 76. 最小覆盖子串(哈希表、滑动窗口、双指针)
    题目:76.最小覆盖子串思路:用哈希表来记录字符串t中字符出现的情况。然后用双指针来实现滑动窗口,找到最小的字符串即可。时间复杂度为0(m+n),细节看注释。classSolution{public:stringminWindow(strings,stringt){ //哈希表unordered_map<char......
  • leetcode面试经典 150 题第三题(26. 删除有序数组中的重复项)#更适合新手学习
     题目:26.删除有序数组中的重复项-力扣(LeetCode)给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。考虑 nums 的唯......