Leetcode680:验证回文串 II

ops/2025/2/4 22:51:52/

题目描述:

给你一个字符串 s最多 可以从中删除一个字符。

请你判断 s 是否能成为回文字符串:如果能,返回 true ;否则,返回 false 。

代码思路:

  1. 定义辅助函数 is_palindrome

    • 这个函数用于检查一个字符串的子串是否是回文。
    • 它接受三个参数:子串 sub_s,子串的左边界 left,和子串的右边界 right
    • 使用一个 while 循环,当左边界小于右边界时,比较左右边界的字符是否相等。
    • 如果字符不相等,返回 False,表示子串不是回文。
    • 如果字符相等,则移动左右边界向内收缩,继续比较。
    • 如果循环结束都没有返回 False,则说明子串是回文,返回 True
  2. 主函数 validPalindrome

    • 这个函数接受一个字符串 s 作为参数,用于判断该字符串是否是有效的回文字符串。
    • 初始化两个指针 left 和 right 分别指向字符串的开头和结尾。
    • 使用一个 while 循环,当左指针小于右指针时,执行以下步骤:
      • 比较左右指针指向的字符是否相等。
      • 如果字符相等,则移动左右指针向内收缩,继续比较。
      • 如果字符不相等,说明当前字符串不是直接回文,但可能是通过删除一个字符后成为回文。
      • 调用 is_palindrome 函数检查两种情况:
        • 删除左指针指向的字符后,剩余的子串是否是回文。
        • 删除右指针指向的字符后,剩余的子串是否是回文。
      • 如果上述两种情况中任何一种返回 True,则说明原字符串是有效的回文字符串(即可以通过删除最多一个字符成为回文),返回 True
      • 如果循环结束都没有发现字符不相等的情况,说明字符串本身就是回文,返回 True

代码实现:

class Solution:def validPalindrome(self, s: str) -> bool:def is_palindrome(sub_s, left, right):while left < right:if sub_s[left] != sub_s[right]:return Falseleft += 1right -= 1return Trueleft, right = 0, len(s) - 1while left < right:if s[left] != s[right]:return is_palindrome(s, left + 1, right) or is_palindrome(s, left, right - 1)left += 1right -= 1return True

 

 


http://www.ppmy.cn/ops/155697.html

相关文章

Vue指令v-text

目录 一、Vue中的v-text指令是什么&#xff1f;二、v-text指令内部支持写表达式。 一、Vue中的v-text指令是什么&#xff1f; v-text指令用于设置标签的文本值(textContent)。 二、v-text指令内部支持写表达式。 注意&#xff1a;v-text指令的默认写法会替换全部内容&#x…

uniapp 地图添加,删除,编辑标记,在地图中根据屏幕范围中呈现标记

前言 小程序实现新功能&#xff0c;在地图中选取位置添加标记&#xff0c;并在地图中呈现添加的标记&#xff0c;&#xff08;呈现的是根据当前屏幕范围内的标记&#xff09;&#xff0c;并对标记进行分享&#xff0c;删除&#xff0c;编辑&#xff0c;导航&#xff0c;并从分…

pytorch基于FastText实现词嵌入

FastText 是 Facebook AI Research 提出的 改进版 Word2Vec&#xff0c;可以&#xff1a; ✅ 利用 n-grams 处理未登录词 比 Word2Vec 更快、更准确 适用于中文等形态丰富的语言 完整的 PyTorch FastText 代码&#xff08;基于中文语料&#xff09;&#xff0c;包含&#xff1…

Resnet 改进:尝试在不同位置加入Transform模块

目录 1. TransformerBlock 2. resnet 3. 替换部分卷积层 4. 在特定位置插入Transformer模块 5. 使用Transformer全局特征提取器 6. 其他 Tips:融入模块后的网络经过测试,可以直接使用,设置好输入和输出的图片维度即可 1. TransformerBlock TransformerBlock是Transfo…

【Qt】信号和槽简介

信号与槽是 Qt编程的基础&#xff0c;也是 Qt的一大创新。有了信号与槽的编程机制&#xff0c;在 Qt 中处理界面上各个组件的交互操作就变得比较直观和简单。 信号(signal)是在特定情况下被发射的通知&#xff0c;例如QPushButton较常见的信号就是点击鼠标时发射的 clicked()信…

图像处理之图像灰度化

目录 1 图像灰度化简介 2 图像灰度化处理方法 2.1 均值灰度化 2.2 经典灰度化 2.3 Photoshop灰度化 2.4 C语言代码实现 3 演示Demo 3.1 开发环境 3.2 功能介绍 3.3 下载地址 参考 1 图像灰度化简介 对于24位的RGB图像而言&#xff0c;每个像素用3字节表示&#xff0…

【数据库初阶】表的查询语句和聚合函数

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; 数据库初阶 &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 亲爱的小伙伴们&#xff0c;大家好&#xff01;在这篇文章中&#xff0c;我们将深入浅出地为大家讲解 表的查…

视频拼接,拼接时长版本

目录 视频较长&#xff0c;分辨率较大&#xff0c;这个效果很好&#xff0c;不耗用内存 ffmpeg imageio&#xff0c;适合视频较短 视频较长&#xff0c;分辨率较大&#xff0c;这个效果很好&#xff0c;不耗用内存 ffmpeg import subprocess import glob import os from nats…