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

125.验证回文串

时间:2024-03-26 13:58:38浏览次数:29  
标签:字符 slow 验证 字母 fast 125 字符串 回文

回顾用的,原题链接:. - 力扣(LeetCode)

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。

字母和数字都属于字母数字字符。

给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 

示例与解释

示例 1

输入: s = "A man, a plan, a canal: Panama"
输出:true
解释:在移除非字母数字字符并将大写转换为小写后,得到的字符串是 "amanaplanacanalpanama",这是一个回文串。

示例 2

输入:s = "race a car"
输出:false
解释:在移除非字母数字字符并将大写转换为小写后,得到的字符串是 "raceacar",这不是一个回文串。

示例 3

输入:s = " "
输出:true
解释:在移除非字母数字字符后,得到的字符串是空字符串 ""。空字符串正着反着读都一样,所以是回文串。

题目要求

给定一个字符串 s,编写一个函数来判断它是否为回文串,并返回相应的布尔值。

提示

  • 1 <= s.length <= 2 * 10^5
  • s 仅由可打印的 ASCII 字符组成
    class Solution {  
    public:  
        bool isPalindrome(std::string s) {  
            int slow = 0, fast = s.size() - 1;  
            while (slow < fast) {  
                // 跳过slow指向的非字母数字字符  
                while (slow < fast && !isalnum(s[slow])) {  
                    slow++;  
                }  
                  
                // 跳过fast指向的非字母数字字符  
                while (slow < fast && !isalnum(s[fast])) {  
                    fast--;  
                }  
                  
                // 如果两个指针都越过了对方,说明所有字符都已检查完毕  
                if (slow >= fast) {  
                    break;  
                }  
                  
                // 比较两个字母数字字符是否相等(不区分大小写)  
                if (tolower(s[slow]) != tolower(s[fast])) {  
                    return false;  
                }  
                  
                // 继续检查下一对字符  
                slow++;  
                fast--;  
            }  
              
            // 所有字符都已检查完毕且都相等,是回文  
            return true;  
        }  
    };


     

标签:字符,slow,验证,字母,fast,125,字符串,回文
From: https://blog.csdn.net/hehewuyu1/article/details/137014068

相关文章

  • 代码随想录算法训练营第五十七/天 | 516. 最长回文子序列,647. 回文子串
     动态规划最强总结篇!如今动态规划已经讲解了42道经典题目,共50篇文章,是时候做一篇总结了。关于动态规划,在专题第一篇关于动态规划,你该了解这些! (opensnewwindow)就说了动规五部曲,而且强调了五部对解动规题目至关重要!这是Carl做过一百多道动规题目总结出来的经验结晶啊......
  • SQLYOG连接数据库时报错1251
    报错图片报错原因:主要是由于mysql8以前的加密规则与mysql8以后的存在差异,一些版本旧的客户端和服务端版本差别太大!解决办法:1.修改加密规则(注意引号为英文单引号,后面结尾的分号必须带上,@符号和引号之间无空格,下同)ALTERUSER'root'@'localhost'IDENTIFIEDBY'passwor......
  • Oracle-12541无监听或者链接一直未响应
    近日Oracle服务器断电重启后服务挂了,现记录下主要的修复步骤1.检查磁盘空寂是否股够df-h2.服务挂载并启动服务器登录oracle帐号依次输入下列命令:sqlplus /assysdbashutdownimmedicatestartup3.服务启动测试退出linux终端,重新打开登陆sqlplus输入帐号/秘密:system......
  • P8716 [蓝桥杯 2020 省 AB2] 回文日期
    思路解析本题与洛谷的P2010[NOI......
  • 系统学习Python——装饰器:“私有“和“公有“属性案例-[为Python3.X重定义运算符重载
    分类目录:《系统学习Python》总目录通常接口代理被要求添加对运算符重载方法的支持,以便正确地委托调用。然而,在我们特定的私有应用中,它也引起了一些额外的设计选择。特别地,运算符重载方法的私有性依每个实现而有不同:它们调用__getattr__,重定位混合类要求仝部访问的__X__名......
  • Blazor学习记录四_表单和验证___
    12.表单和验证表单几件套——EditForm组件验证特性标签或说注解[Required]命名空间System.ComponentModel.DataAnnotations其作用在模型类的属性前面。绑定模型,即组件参数Model="Instance"(一般是一个class对象)验证器子组件<DataAnnotationsValidator/>验证结果子组......
  • 两数之和与回文数
    主函数我就不写了,随便一想就能弄出来两数之和给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任......
  • macbook使用php的fastadmin框架验证码不显示解决办法
    macbook使用php的fastadmin框架验证码不显示解决办法给php安装freetype插件freetype下载链接解压插件进入命令行工具,然后进到刚才解压的文件目录中然后执行该命令./configure--enable-static--enable-shared(没有指定prefix,.h文件默认安装到/usr/local/includ......
  • 基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览RTL图:   仿真图:   导入到matlab显示效果如下:   2.算法运行软件版本matlab2022a vivado2019.2 3.算法理论概述      在计算机视觉领域,基于肤色模型和中值滤波的手部检测方法是一种常见的初步定位策略。该方法主要分为......
  • 【阻抗建模、验证扫频法】光伏并网逆变器扫频与稳定性分析(包含锁相环电流环)(Simulink
    ......