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

2025年--Lc232-LCR 019. 验证回文串 II-Java版

1.题目

在这里插入图片描述

2.思路

在不删除字符的情况下,判断字符串是不是回文串的做法是使用双指针从字符串的两端开始同时向中间移动,直到两个指针相遇。如果移动过程中出现两个指针指向的字符不同,则字符串不满足正向和反向遍历的结果相同,因此不是回文串。如果移动过程中,两个指针指向的字符总是相同,则字符串是回文串。

用 left 和 right 表示两个指针。在允许删除最多一个字符的情况下,如果移动过程中出现 s[left]

=s[right],则需要删除 s[left] 或 s[right],才可能将 s 变成回文串。

如果删除 s[left],则剩余字符的下标范围是 [left+1,right];如果删除 s[right],则剩余字符的下标范围是 [left,right−1]。分别检查这两个下标范围中的子串是不是回文串,如果其中至少有一个子串是回文串,则可以通过删除一个字符将 s 变成回文串,否则不可以通过删除一个字符将 s 变成回文串。

特别地,如果移动过程中 s[left]=s[right] 总是成立,则 s 是回文串,不需要删除任何字符。

3.代码实现

class Solution {public boolean validPalindrome(String s) {int left=0;int right=s.length()-1;while(left<right){if(s.charAt(left)==s.charAt(right)){left++;right--;}else{if(huiwen(s,left+1,right)||huiwen(s,left,right-1)){return true;}return false; // 关键补充:两种删法都不行,直接返回 false}}return true;}public boolean huiwen(String s,int begin,int end){ int left=begin;int right=end;while(left<right){if(s.charAt(left)!=s.charAt(right)){return false;}left++;right--;}return true;}
}
http://www.dtcms.com/a/593658.html

相关文章:

  • 马鞍山做网站的建投能源公司简介
  • 【C++进阶】STL-string的简单实现
  • 网站拒绝了您的访问电商网站开发环境
  • Kimi K2-Thinking的路线,有待商榷
  • 微信网站名云服务器哪家好
  • 热电式传感器
  • 在 Ubuntu 上部署 Docker Swarm 集群(完整指南)
  • 网站开发需要代码吗百度推广落地页
  • C++中测试无锁队列的正确性和性能
  • seo网站快速排名网站的按钮怎么做 视频
  • TortoiseSVN客户端(小乌龟)安装与使用
  • “十防”标准的技术赋能:基于传感器网络的档案环境精准调控研究
  • 建设网站教程视频视频房地产店铺首页设计过程
  • SQL 注入复习
  • 网站开发工具有哪些wordpress网址跳转
  • Uni微信小程序如何对接百度翻译
  • 蓝牙钥匙 第77次 蓝牙与边缘计算融合:重新定义物联网的智能边界
  • CodexField 如何构建自增长的内容资产生态?
  • 逻辑服务编排的定义变量,将数据和逻辑解耦,配置化实现数据驱动流程!
  • 代码随想录 Q89.跳跃游戏Ⅱ
  • 那个网站是专门做渔具的网站设计与建设难吗
  • Bootstrap4 导航栏
  • ESLint: Expected indentation of * spaces but found *. (style/indent)
  • 前端根据文件后缀名智能识别文件类型的实用函数
  • 文山 网站建设 滇icp成都优化官网推广
  • 线性代数 - 矩阵乘法能换括号,不能换顺序;满足结合律,不满足交换律
  • ScaleRL:掌握大语言模型强化学习的规模化艺术
  • AI MCP体系化开发指南:从诞生背景到技术实现
  • QSS选择器详解:让你的Qt应用界面焕然一新
  • 【底层机制】Android低内存管理机制深度解析