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

【LeetCode-剑指offer】--19.验证回文串II

19.验证回文串II

image-20240104202809298

方法:双指针

首先考虑如果不允许删除字符,如何判断一个字符串是否是回文串。常见的做法是使用双指针。定义左右指针,初始时分别指向字符串的第一个字符和最后一个字符,每次判断左右指针指向的字符是否相同,如果不相同,则不是回文串;如果相同,则将左右指针都往中间移动一位,直到左右指针相遇,则字符串是回文串

在允许最多删除一个字符的情况下,同样可以使用双指针,通过贪心实现。初始化两个指针 low和 high 分别指向字符串的第一个字符和最后一个字符。每次判断两个指针指向的字符是否相同,如果相同,则更新指针,将 low 加 1,high 减 1,然后判断更新后的指针范围内的子串是否是回文字符串。如果两个指针指向的字符不同,则两个字符中必须有一个被删除,此时我们就分成两种情况:即删除左指针对应的字符,留下子串 s[low+1:high],或者删除右指针对应的字符,留下子串 s[low:high−1]。当这两个子串中至少有一个是回文串时,就说明原始字符串删除一个字符之后就以成为回文串。

class Solution {public boolean validPalindrome(String s) {int low = 0, high = s.length() - 1;while(low < high){if(s.charAt(low) == s.charAt(high)){low++;high--;}else{return validPalind(s,low,high - 1) || validPalind(s,low+1,high);}}return true;}public boolean validPalind(String s,int low,int high){for(int i =low,j = high;i < j; i++,j--){char c1 = s.charAt(i),c2 = s.charAt(j);if(c1 != c2){return false;}}return true;}
}
http://www.lryc.cn/news/273593.html

相关文章:

  • 锂电池寿命预测 | Matlab基于LSTM长短期记忆神经网络的锂电池寿命预测
  • JSON 详解
  • 我不想学JAVA---------JAVA和C的区别
  • 不能错过的AI前沿开源工具!
  • 为什么深度学习神经网络可以学习任何东西
  • 使用 SpringSecurity 发送POST请求出现 403
  • 解决Typora笔记上传到CSDN上图片无法显示的问题
  • Vue3.0+Echarts (可视化界面)
  • 编程语言的未来:探索技术进步的轨迹
  • SOLIDWORKS使用技巧——SOLIDWORKS草图绘制时一定要完全定义
  • 网络类型之GRE和MGRE和NHRP
  • uniapp获取日期
  • 编码和解码的未来之路
  • Prometheus实战篇:Prometheus监控redis
  • Vue2.Hello World
  • 【单片机项目实战】温度控制系统
  • SpringMVC-视图
  • 【React系列】Hook(一)基本使用
  • 算法训练营Day28
  • 鸿蒙OS应用开发之日期选择
  • Mysql 查看表注释或字段注释
  • MySQL InnoDB引擎
  • C++完成Query执行sql语句的接口封装和测试
  • C:宏:编程风格:井号与define之间的空格
  • django websocket
  • HackTheBox - Medium - Linux - Bagel
  • Capsolver:解决Web爬虫中CAPTCHA挑战的最优解决方案
  • 大数据系列之:读取parquet文件统计数据量
  • 力扣题:字符串变换-1.5
  • el-autocomplete远程搜索使用及el-upload上传多个文件流给后端,详情接口返回的是文件地址,前端将文件地址转成文件流,回传文件流给后端