Leetcode 125. 验证回文串

【简单】力扣算法题解析LeetCode125:验证回文串 判断字符串是否为回文串,忽略非字母数字字符且不区分大小写。使用双指针法,首先预处理字符串,过滤非字母数字字符并统一转为小写。然后左右指针从两端向中间遍历比较字符,若发现不匹配则返回false,否则遍历结束后返回true。该方法时间复杂度O(n),空间复杂度O(1)。示例代码展示了Java实现,通过跳过无效字符并比较有效字符来高效判断回文。 阅读详情

题目

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

输入: “A man, a plan, a canal: Panama”
输出: true

示例 2:

输入: “race a car”
输出: false

本题解答:双指针

本题双指针解法介绍:

  1. 一个从头开始一直找到字母/数字停止。
  2. 一个从尾部开始一直找到字母/数字停止。
  3. 忽视大小写比较二者相等性。
  4. 相等就继续,否则返回 false 。

判断 字符/数字 以及 统一字母大小写 可以有多种实现方式。

1. 使用Java库函数

使用了库函数:Character

注意:Character.toLowerCase(ch) 的返回值是 char,而不是Character对象。

代码
class Solution {
    public boolean isPalindrome(String s) {
        if(s == null || s.isEmpty()) return true;
        
        int i = 0;
        int j = s.length() - 1;
        while(i < j) {
            while(i < j && !Character.isLetterOrDigit(s.charAt(i))) i ++;     
            while(i < j && !Character.isLetterOrDigit(s.charAt(j))) j --;
            if(Character.toLowerCase(s.charAt(i ++)) != Character.toLowerCase(s.charAt(j --))) return false; 
        }
        
        return true;
    }
}
结果

在这里插入图片描述

2. 自己实现字符控制

主要实现了字母大小写的统一。

两种方案:

  1. 转成大写:ch & 0b11011111 简写:ch & 0xDF
  2. 转成小写:ch | 0b00100000 简写:ch | 0x20
代码
class Solution {
    public boolean isPalindrome(String s) {
        if(s == null || s.isEmpty()) return true;
        
        int i = 0;
        int j = s.length() - 1;
        while(i < j) {
            while(i < j && !isLetterOrDigit(s.charAt(i))) i ++;     
            while(i < j && !isLetterOrDigit(s.charAt(j))) j --;
            if((s.charAt(i ++) & 0xDF) != (s.charAt(j --) & 0xDF)) return false; 
        }
        
        return true;
    }
    
    
    private boolean isLetterOrDigit(char ch) {
        if(ch >= '0' && ch <= '9') return true;
        if((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) return true;
        
        return false;
    }
}
结果

在这里插入图片描述

《生化危机9:安魂曲》D加密免BIOS破解方案详解 数字版权管理(DRM)技术通过加密手段保护软件版权,Denuvo(D加密)作为主流方案常应用于3A游戏。其原理是通过实时验证机制阻止未授权访问,但可能影响性能表现。本文以《生化危机9》为例,解析一种免BIOS修改的D加密绕过方案,该方案通过授权启动器模拟正版验证流程,保持系统零侵入性。实测表明,该方法在GTX 1060至RTX 3070等多硬件平台均能稳定运行,支持MOD扩展且兼容Reshade画质增强,为玩家提供开箱即用的绿色版体验。 阅读详情

相关推荐

GLDAS数据高效处理指南:基于Matlab的NC4转GeoTIFF实战解析

本文提供了一份基于Matlab的GLDAS数据处理实战指南,详细解析了如何将NetCDF4格式的GLDAS数据高效、准确地批量转换为GIS友好的GeoTIFF格式。文章核心内容包括数据理解、环境搭建、核心代码逐步拆解、效率提升技巧以及常见避坑方案,旨在帮助全球生态、水文与气候领域的研究者打通数据预处理的关键环节,提升科研工作效率。

weixin_29094775的博客 310

【Java力扣算法】LeetCode 125 验证回文串

题目: 验证回文串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true ...

懂技术的猫 534

快衰落、慢衰落,平坦衰落、频率选择性衰落

目录一、大尺度衰落和小尺度衰落二、平坦衰落和频率选择性衰落1.反射墙、固定天线模型2.相干带宽和时延扩展三、快衰落和慢衰落1.反射墙、运动天线模型2.相干时间和多普勒扩展四、联系总结 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、大尺度衰落和小尺度衰落 移动无线信道的主要特征是信道强度关于时间和频率的变化,大致分两种: 大尺度衰落: .

weixin_45662974的博客 3万+

关于力扣LeetCode第125题验证回文串

关于力扣LeetCode第125题验证回文串 我是用栈的方式解决的,将所有字母数字全部入栈,再全部出栈后就能得到反转,将入栈的内容与出栈的内容对比,完全相等那就是回文串了 缺点就是 没有优点,速度慢 内存占用高,只是作为一种思路延伸吧,初学,看官勿喷 //125. 验证回文串 public boolean isPalindrome(String s) { s=s.toLowerCase(); // 不区分大小写

weixin_43967331的博客 299

ICC II 时钟树综合(CTS)前奏:从约束定义到NDR规则的全方位设置指南

本文详细介绍了ICC II中时钟树综合(CTS)的前期准备工作,包括约束定义、NDR规则设置和时钟平衡点控制等关键步骤。通过实际案例和代码示例,指导工程师如何优化时钟偏斜、插入延迟和信号质量,确保芯片设计的时序收敛和性能稳定。特别强调了非默认布线规则(NDR)在时钟网络设计中的重要性。

weixin_42530458的博客 212

DFRobot MGC3130电容式手势传感器库深度解析

电容式近场感应(Electric Near Field Sensing)是一种非接触、抗干扰的三维空间感知技术,其原理基于人体介电特性对高频电场的扰动响应,具备低功耗、高鲁棒性与零物理接触等核心优势。该技术广泛应用于医疗人机交互、工业HMI、智能家电等对可靠性与环境适应性要求严苛的嵌入式场景。DFRobot_MGC3130库正是面向Microchip MGC3130芯片的工程化实现,封装了I²C驱动、ASU硬件加速调度及多层抽象API,支持手势识别、触控检测与接近唤醒等功能动态切换。结合电容式近场感应与嵌入

weixin_34620658的博客 549

LeetCode125_验证回文串

C++中的 isalnum() 函数

Haolin_Liu的博客 678

nvidia系列教程-AGX-Orin linux源码下载编译

NVIDIA AGX Orin 是一款高性能的嵌入式计算平台,广泛应用于人工智能、自动驾驶、机器人等领域。为 AGX Orin 编译定制的 Linux 内核,可以更好地适应特定应用需求,增强系统的灵活性。本文将详细介绍如何下载、配置和编译适用于 AGX Orin 的 Linux 内核源码。本文介绍了如何为 NVIDIA AGX Orin 平台下载、配置和编译定制的 Linux 内核源码。通过编译和部署定制内核,您可以更好地控制系统的行为,并根据特定应用需求进行优化。

flypig has a dream! 1282

LeetCode 力扣 125. 验证回文串

题目描述(简单难度) 判断一个字符串是否是回文串,忽略掉除了字母和数字外的字符。 解法一 两个指针,一个指针从头进行,一个指针从尾部进行。依次判断两个指针的字符是否相等,同时要跳过非法字符。需要注意的是,两个指针不用从头到尾遍历,当两个指针相遇的时候就意味着这个字符串是回文串了。 还需要注意的是 'A' == 'a' ,也就是大写字母和小写字母是相同的。 publ...

wind_liang的博客 1223

SKUA-GOCAD入门教程-第八节 线的创建与编辑7和8

本文介绍了曲线编辑操作的主要功能,包括曲线部分和区域的管理操作。在曲线部分操作方面,详细说明了如何合并、删除、移动和过滤曲线部分,支持精确或带公差的合并方式。在曲线区域操作方面,阐述了保留/删除区域点、移动区域点、保留/删除区域线段等操作。此外还介绍了节点连接功能,包括新增/删除连接、端点连接以及为曲线赋予地质特征的方法。

江洋大葱的博客 390

PCL 直通滤波

内容抄自优快云点云侠:[【2024最新版】PCL点云处理算法汇总(C++长期更新版)](https://blog.csdn.net/qq_36686437/article/details/114160640)。质量无忧,永久免费,可放心复制粘贴。

m0_51204289的博客 903

Leetcode 125. 验证回文串

2.最开始想的是,直接 while 循环遍历字符串,如果两个指针对应的字符不是字符也不是数字的,就后移或者前移。如果是大写就给它转换成小写,但是字符串中不能修改单个字符,就使用了list转换一下。如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。给你一个字符串 s,如果它是 回文串 ,返回 true;否则,返回 false。后来发现可以直接将字符串转成小写的,在生成list的时候就给转换了。解释:在移除非字母数字字符之后,s 是一个空字符串 “”。

li_yizhixiaowukong的博客 1132

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Leetcode 125. 验证回文串 C++

Leetcode 125. 验证回文串 题目 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 测试样例 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false 题解 双指针,一个指针从左向右,一个指针从右向左,注意只考虑字母和数字,同时将字母都当作大写。详细过程见代码 代码 bool isValid(cha

weixin_43750513的博客 275

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LeetCode 力扣 125. 验证回文串 isPalindrome

大家觉得写还可以,可以点赞、收藏、关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录125. 验证回文串题目描述说明示例 1:示例 2:分析提交结果 125. 验证回文串 题目描述 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明 本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例

motongxue的博客 341

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LeetCode第125题_验证回文串

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个。字母和数字都属于字母数字字符。给你一个字符串s,如果它是,返回true;否则,返回false。

qq_40263592的博客 1263

力扣解题-125. 验证回文串

正则预处理解法(第一次/第二次):逻辑直观但性能差,正则替换是核心损耗,仅适合快速编写代码;手动过滤+双指针:性能优于正则解法,逻辑简洁,是工程中折中选择;原地双指针法(最优解):空间O(1)、时间O(n)且常数因子小,无额外内存开销,是本题的最优写法;关键优化技巧:避免使用正则处理简单字符过滤,优先用;尽可能在原字符串上操作,减少新字符串生成;双指针遍历过程中提前终止(发现不匹配直接返回),减少无效操作。

qq_38261626的博客 987

<LeetCode力扣>125. 验证回文串

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: “A man, a plan, a canal: Panama” 输出: true 解释:“amanaplanacanalpanama” 是回文串 示例 2: 输入: “race a car” 输出: false 解释:“raceacar” 不是回文串 提示: 1)1 <= s.length <= 2 * 10^5 2)字符串 s 由 AS.

wanlaizhou的博客 461

LeetCode 125. 验证回文串 java

LeetCode 125. 验证回文串 java 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false JAVA 代码: class Solutio...

lele的专栏 364

125. 验证回文串【 力扣(LeetCode) 】

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

yyh520025的博客 679

LeetCode 125 验证回文串 简单

验证回文串 简单

分享简单技术,记录点滴成长 382

【leetcode】125.验证回文串

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。给你一个字符串 s,如果它是 回文串 ,返回 true;输入: s = “A man, a plan, a canal: Panama”解释:“amanaplanacanalpanama” 是回文串。解释:在移除非字母数字字符之后,s 是一个空字符串 “”。由于空字符串正着反着读都一样,所以是回文串。解释:“raceacar” 不是回文串。输入:s = “race a car”输入:s = " "

qq_38473254的博客 796

Leetcode:NO.125 验证回文串

题目 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false 链接:https://leetcode-cn.com/problems/valid-palindrome 解题记录 先写一个函数用于将字符串转换为没有特殊字符,大写转小写 然后左右两个指针比对判

泛泛之素 1242

力扣125. 验证回文串(双指针、内置函数)

力扣125. 验证回文串(双指针、内置函数) https://leetcode-cn.com/problems/valid-palindrome/ 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 ...

小麦China的博客 298

LeetCode 1-1:125 验证回文串

LeetCode 1-1:125 验证回文串 1 题目 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 2 说明 本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: “A man, a plan, a canal: Panama” 输出: true 示例 2: 输入: “race a car” 输出: false Related Topics: 双指针 字符串 3 解答 1 解答成功: 执行耗时:40 ms,击败了98.10% 的Python3用户 内存

guobingai的博客 200

Leetcode 125.验证回文串

Leetcode 125.验证回文串 验证回文串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: “A man, a plan, a canal: Panama” 输出: true 示例 2: 输入: “race a car” 输出: false class Solution { public boolean isPalindrome(String s) { //将所有字母进行大写转

EIUC_Thread的博客 217

LeetCode 125. 验证回文串 | C++语言版

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

weixin_45992021的博客 704
上一篇: Leetcode 115. 不同的子序列
下一篇: Leetcode 151. 翻转字符串里的单词
一纸浮萍
博客等级 码龄9年 11粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值