[LeetCode] 680. Valid Palindrome II
Given a string s
, return true
if the s
can be palindrome after deleting at most one character from it.
Example 1:
Input: s = "aba" Output: true
Example 2:
Input: s = "abca" Output: true Explanation: You could delete the character 'c'.
Example 3:
Input: s = "abc" Output: false
Constraints:
1 <= s.length <= 105
s
consists of lowercase English letters.
验证回文字符串II。
给定一个非空字符串 s
,最多删除一个字符。判断是否能成为回文字符串。
题意跟版本一很接近,版本一问的只是 input 是不是回文,版本二问的是如果允许最多删除一个字符,问剩下的内容还是不是回文。这里可删可不删。思路还是双指针往中间逼近,同时需要写一个 helper 函数帮助判断回文情况。while 循环的一开始,如果两边的 char 相同,就往中间逼近;如果不同,则判断这两种情况里面是否有任意一个能 return true,因为只要有一个 return true 就说明删除一个字符,剩下的部分是有效的。
时间O(n)
空间O(1)
Java实现
1 class Solution { 2 public boolean validPalindrome(String s) { 3 int left = 0; 4 int right = s.length() - 1; 5 while (left < right && s.charAt(left) == s.charAt(right)) { 6 left++; 7 right--; 8 } 9 if (helper(s, left + 1, right)) { 10 return true; 11 } 12 if (helper(s, left, right - 1)) { 13 return true; 14 } 15 return false; 16 } 17 18 private boolean helper(String s, int left, int right) { 19 while (left < right) { 20 if (s.charAt(left) != s.charAt(right)) { 21 return false; 22 } 23 left++; 24 right--; 25 } 26 return true; 27 } 28 }
JavaScript实现
1 /** 2 * @param {string} s 3 * @return {boolean} 4 */ 5 var validPalindrome = function (s) { 6 let left = 0; 7 let right = s.length - 1; 8 while (left < right && s[left] === s[right]) { 9 left++; 10 right--; 11 } 12 if (checkPalindrome(s, left + 1, right)) { 13 return true; 14 } 15 if (checkPalindrome(s, left, right - 1)) { 16 return true; 17 } 18 return false; 19 }; 20 21 var checkPalindrome = function (s, left, right) { 22 while (left < right) { 23 if (s[left] !== s[right]) { 24 return false; 25 } 26 left++; 27 right--; 28 } 29 return true; 30 };
相关题目
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】