LeetCode 125题:验证回文串

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣!

  • 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注
    在这里插入图片描述

  • 导航

    • LeetCode解锁1000题: 打怪升级之旅:每题都包括3-5种算法,以及详细的代码实现,刷题面试跳槽必备
    • 漫画版算法详解:通过漫画的形式和动态GIF图片把复杂的算法每一步进行详细可视解读,看一遍就掌握
    • python源码解读:解读python的源代码与调用关系,快速提升代码质量
    • python数据分析可视化:企业实战案例:企业级数据分析案例与可视化,提升数据分析思维和可视化能力
    • 程序员必备的数学知识与应用:全面详细的介绍了工程师都必备的数学知识

期待与您一起探索技术、持续学习、一步步打怪升级 欢迎订阅本专栏❤️❤️

题目描述

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

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

示例:

  • 输入: “A man, a plan, a canal: Panama”
  • 输出: True
  • 输入: “race a car”
  • 输出: False

方法一:双指针法

解题步骤

  1. 创建两个指针,分别指向字符串的开始和结束位置。
  2. 向中心移动两个指针,跳过非字母和数字的字符。
  3. 比较两个指针所指的字符,如果在任何时候字符不同,则字符串不是回文。
  4. 如果指针成功地相遇,则字符串是回文。

Python 示例

def isPalindrome(s: str) -> bool:l, r = 0, len(s) - 1while l < r:while l < r and not s[l].isalnum():l += 1while l < r and not s[r].isalnum():r -= 1if s[l].lower() != s[r].lower():return Falsel += 1r -= 1return True# Example usage
print(isPalindrome("A man, a plan, a canal: Panama"))  # Output: True
print(isPalindrome("race a car"))  # Output: False

算法分析

  • 时间复杂度:O(n),其中 n 是字符串的长度,最坏情况下需要检查所有字符。
  • 空间复杂度:O(1),只使用了固定的额外空间。

算法图解与说明

示例 "A man, a plan, a canal: Panama"
双指针分别从两端开始向中间靠拢,跳过非字母和数字的字符,依次比较:A 与 a, m 与 m, a 与 a, n 与 n, ...
最终两指针相遇,确认为回文串。

方法二:过滤和反转字符串

解题步骤

  1. 使用字符串方法和列表推导过滤出字母和数字字符。
  2. 将过滤后的字符串转换为小写。
  3. 比较过滤后的字符串和它的反转,如果相同则是回文。

Python 示例

def isPalindrome(s: str) -> bool:filtered_chars = [char.lower() for char in s if char.isalnum()]return filtered_chars == filtered_chars[::-1]# Example usage
print(isPalindrome("A man, a plan, a canal: Panama"))  # Output: True
print(isPalindrome("race a car"))  # Output: False

算法分析

  • 时间复杂度:O(n),其中 n 是字符串的长度。
  • 空间复杂度:O(n),存储了过滤后的字符串。

算法图解与说明

使用列表推导提取 "A man, a plan, a canal: Panama" 中的字母和数字:"amanaplanacanalpanama"
比较该字符串与其反转:"amanaplanacanalpanama" == "amanaplanacanalpanama"
确认为回文。

这两种方法都能有效地解决验证回文字符串的问题,方法一在空间上更优,而方法二在代码简洁性上有优势。

🌹🌹如果觉得这篇文对你有帮助的话,记得一键三连关注、赞👍🏻、收藏是对作者最大的鼓励,非常感谢 ❥(^_-)

❤️❤️作者知识有限,如有错误,请各位大佬评论区批评指正,不胜感激❥(^_-)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/697504.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VTK 数据类型:vtkUnstructuredGrid

VTK 数据类型&#xff1a;vtkUnstructuredGrid VTK 数据类型&#xff1a;vtkUnstructuredGridVTK 中数据类型的继承关系常用的几何类型实例&#xff1a;vtkHexahedron 和 vtkTetra VTK 数据类型&#xff1a;vtkUnstructuredGrid 非结构化点是在空间中离散随意分布的点&#xf…

【java-数据结构13-双向链表的增删查改1】

在上一篇文章中&#xff0c;我们已将双向链表成功创建&#xff0c;接下来&#xff0c;我们将对链表进行增删查改&#xff0c;敬请期待叭~&#xff08;觉得小编写的还可以的可以可以留个关注~&#xff09; &#xff08;1.遍历链表 思路&#xff1a;定义一个cur&#xff0c;让c…

使用Xshell工具连接ubuntu-方便快捷

使用Xshell连接ubuntu 在命令行输入 “sudo apt-get install openssh-server”安装openssh-server 开启 ssh-server&#xff0c;在命令行输入 “service ssh start”&#xff0c;然后输入密码即可

自动攻丝机进出料激光检测 进料出料失败报警循环手动及关闭报警退出无限循环

/**************进料检测********************/ /***缺料无限次循环 手动退出 超时报警*******/ void check_Pon() // { zstatus0; //报警计数器归零 Signauto1; …

使用ffmpeg将本地摄像头推流至RTSP服务器,支持RTSP和RTMP协议

一、流媒体传输协议&#xff1a;RTSP和RTMP 1、RTSP和RTMP的工作原理 1.1&#xff09;RTSP工作原理 用户设备向视频流平台发送RTSP请求。视频流平台返回可操作的请求列表&#xff0c;如播放、暂停等。用户设备发送具体的请求&#xff0c;如播放。视频流平台解析请求并启动相…

git仓库使用

git仓库是会限制空间大小限制的 git网络库的容量限制_github仓库大小限制-CSDN博客 git是用于管理github的工具 电脑左下角搜索git打开GitBash.exe 进入到要下载到本地的目录 下载到本地的文件不要更改&#xff01; 如果要使用请务必把文件复制到别的空间去再在这个别的空间…

数据库笔记-【视图】

视图 视图通俗是企业想展示给用户看的&#xff0c;数据库存储的数据有很多&#xff0c;但是也有很多是不能对外公开的&#xff0c;做项目的过程就通过视图这个媒介达到这种效果 视图也可以保证数据库表结构字段的隐私安全等 create or replace view stu_v_1 as select id st…

虚拟机有线已连接但无法上网—·可能性之一

背景 VMware虚拟机&#xff0c;搭建了三台Linux服务器&#xff0c;组成Hadoop集群&#xff0c;由于在Hadoop102上有一些经常与Mysql数据库交互的任务&#xff0c;需要经常打开运行&#xff0c;而Hadoop103和104则经常处于关闭状态&#xff0c;一段时间后再次启动集群时候&…

使用Dockerfile配置Springboot应用服务发布Docker镜像-16

创建Docker镜像 springboot-docker模块 这个应用可以随便找一个即可&#xff0c;这里不做详细描述了。 pom.xml 依赖版本可参考 springbootSeries 模块中pom.xml文件中的版本定义 <dependencies><dependency><groupId>com.alibaba.cloud</groupId>…

AI智能体|我把Kimi接入了个人微信

大家好&#xff0c;我是无界生长。 最近加入AI学习交流群的小伙伴越来越多&#xff0c;我打算在微信群接入一个聊天机器人&#xff0c;让它协助管理微信群&#xff0c;同时也帮忙给群友解答一些问题。普通的群聊机器人肯定是不能满足需求的&#xff0c;得上AI大模型&#xff0c…

HFSS学习-day5-边界条件

边界条件 概述边界条件类型1、理想导体边界条件&#xff08;Perfect E&#xff09;2、理想磁边界条件&#xff08;Perfect H&#xff09;3、有限导体边界条件&#xff08;Finite Conductivity&#xff09;4、辐射边界条件&#xff08;Radiation&#xff09;5、对称边界条件&…

Java入门基础学习笔记22——程序流程控制

程序流程控制&#xff1a;控制程序的执行顺序。 程序有哪些执行顺序&#xff1f; 顺序、分支和循环。 分支结构&#xff1a; if、switch 循环&#xff1a; for、while、do-while 顺序结构是程序中最简单最基本的流程控制&#xff0c;没有特定的语法结构&#xff0c;按照代码…