当前位置: 首页 > news >正文

验证回文串【双指针、字符串】

力扣https://leetcode.cn/problems/valid-palindrome/description/?envTypestudy-plan-v2envIdtop-interview-150如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。字母和数字都属于字母数字字符。给你一个字符串 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 是一个空字符串 。由于空字符串正着反着读都一样所以是回文串。方法一筛选 判断class Solution: def isPalindrome(self, s: str) - bool: sgood .join(ch.lower() for ch in s if ch.isalnum()) return sgood sgood[::-1]第二种是使用双指针。初始时左右指针分别指向 sgood 的两侧随后我们不断地将这两个指针相向移动每次移动一步并判断这两个指针指向的字符是否相同。当这两个指针相遇时就说明 sgood 是回文串。class Solution: def isPalindrome(self, s: str) - bool: sgood .join(ch.lower() for ch in s if ch.isalnum()) n len(sgood) left, right 0, n - 1 while left right: if sgood[left] ! sgood[right]: return False left, right left 1, right - 1 return Truefunc isPalindrome(s string) bool { var sgood string for i : 0; i len(s); i { if isalnum(s[i]) { sgood string(s[i]) } } sgood strings.ToLower(sgood) left, right : 0, len(sgood)-1 for left right { if sgood[left] ! sgood[right] { return false } left right-- } return true } func isalnum(ch byte) bool { return (ch A ch Z) || (ch a ch z) || (ch 0 ch 9) }方法二在原字符串上直接判断class Solution: def isPalindrome(self, s: str) - bool: n len(s) left, right 0, n - 1 while left right: while left right and not s[left].isalnum(): left 1 while left right and not s[right].isalnum(): right - 1 if left right: if s[left].lower() ! s[right].lower(): return False left, right left 1, right - 1 return Truefunc isPalindrome(s string) bool { s strings.ToLower(s) left, right : 0, len(s) - 1 for left right { for left right !isalnum(s[left]) { left } for left right !isalnum(s[right]) { right-- } if left right { if s[left] ! s[right] { return false } left right-- } } return true } func isalnum(ch byte) bool { return (ch A ch Z) || (ch a ch z) || (ch 0 ch 9) }
http://www.gsyq.cn/news/1344274.html

相关文章:

  • 2026年PMP项目管理培训报考机构深度横评:北上广深考生通关率与投入产出比全解析
  • 轻松掌握华硕笔记本性能控制:轻量级替代工具的使用方法
  • 驱动教学模式革新:广凌智慧教学融合平台如何实现个性化教学?
  • 百度网盘提取码智能获取工具:3秒破解资源下载难题的终极方案
  • 获800万美元种子轮融资,「shapes」用AI打破社交困局,重新定义社交入场方式
  • IX6012 vs ASM1812@ACP# 完整规格 场景对比|PIN-TO-PIN 直接替代、供货稳、支持快
  • JavaSwing仓库管理系统 - MySQL版
  • vue3生成pdf
  • OPA 策略管理实践:从策略到执行
  • 游戏引擎选型实战指南:聚焦团队匹配与项目生命周期
  • Palantir 现在干的活,本质上就是你描述的那个方向,但它在“深度”和“广度”上比你目前的 MVP 设想走得更远。如果说你想做的是一个“能听懂人话的 SQL 查询工具”,那么 Palantir
  • 谁能推荐几个能替代进口品牌的光学筛选机直驱电机供应商?
  • 华硕笔记本的轻量级遥控器:G-Helper让硬件控制回归简单
  • 3MF转GLTF完整技术文档(含免费在线转换教程)
  • 终极NHSE存档编辑器:专业级动物森友会存档修改实战指南
  • 当“信任”成为最大的安全盲区
  • 软件模拟iic+BL24C512
  • SketchUp STL插件终极指南:高效实现3D打印模型转换的完整实战方案
  • 基于Java Web的退休人才求职网站设计与开发
  • 米哈游游戏字体完整指南:11款精美架空文字字体一键获取与使用
  • 一周AI新鲜事(2026.05.11—2026.05.17):AI世界正在进入“全面战争时代”
  • 科技中介机构如何提升服务效率与转化率?
  • java springboot-vue的婚庆服务平台的功能设计
  • Mos:macOS 鼠标滚轮太生硬?这款免费开源工具让你的滚轮爽如触控板
  • 蓝绿环境 灰度环境 极简区别
  • 如何免费实现本地视频字幕提取:你的完整指南
  • QGraphicsView的记录
  • (Pytorch、pandas、matplotlib)数据操作
  • 手机上还有免费编辑pdf文本的软件?!
  • 3分钟掌握PlantUML Editor:用代码思维绘制专业UML图表的终极指南