LeetCode刷题笔记 680.验证回文字符串 Ⅱ
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。
示例 1:
输入: s = "aba"
输出: true
示例 2:
输入: s = "abca"
输出: true
解释: 你可以删除c字符。
示例 3:
输入: s = "abc"
输出: false
提示:
1 <= s.length <= 105
s 由小写英文字母组成
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-palindrome-ii
思路:
双指针→←反向查找,当字符不同时分别删除一个字符再调用单独的函数判断是否构成回文串。
跳过当前一个不同元素,不好分别哪一个才是需要删除的。
1 class Solution { 2 public: 3 bool validPalindrome(string s) { 4 if (s.empty()) return true; 5 int l = 0, r = s.size() - 1; 6 while (s[l] == s[r] && l < r) { 7 ++l, --r; 8 } 9 return (l >= s.length() / 2) || isPalindrome(s, l + 1, r) || isPalindrome(s, l, r - 1); 10 } 11 12 bool isPalindrome(string s, int l, int r) { 13 while (l < r) { 14 if (s[l] == s[r]) l++, r--; 15 else return false; 16 } 17 return true; 18 } 19 };
分类:
LeetCode
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术