【LeetCode】LCR 019. 验证回文串 II

题目

思路(双指针 + 一次容错)

用两个指针 l、r 从两端向中间走:

  • 如果 s[l] == s[r],继续收缩。
  • 第一次遇到不相等时,说明必须"删掉一个字符"来尝试补救:
    • 要么删左边字符:判断 s[l+1..r] 是否为回文
    • 要么删右边字符:判断 s[l..r-1] 是否为回文
  • 两种只要有一种成立,就返回 true;都不成立返回 false。
  • 如果从头到尾都没遇到不相等,原串就是回文,返回 true。

复杂度

  • 时间复杂度:O(n)(最多做两次区间回文检查)
  • 空间复杂度:O(1)

代码(Java)

java 复制代码
class Solution {
    private boolean isPal(String s, int l, int r) {
        while (l < r) {
            if (s.charAt(l) != s.charAt(r)) return false;
        }
        return true;
    }

    public boolean validPalindrome(String s) {
        int l = 0, r = s.length() - 1;
        while (l < r) {
            if (s.charAt(l) == s.charAt(r)) {
                l++;
                r--;
            } else {
                return isPal(s, l + 1, r) || isPal(s, l, r - 1);
            }
        }
        return true;
    }
}
相关推荐
dialect_4 小时前
KMP算法
开发语言·c++·算法
reikocao4 小时前
卡尔曼滤波的动态机制:P如何改变融合权重
算法
漂流瓶jz5 小时前
UVA-1612 猜名次 题解答案代码 算法竞赛入门经典第二版
数据结构·算法·题解·排序·aoapc·算法竞赛入门经典
吞下星星的少年·-·5 小时前
Div.2 CF 1130B题(构造,贪心)
算法·贪心·构造
文丑颜不良啊5 小时前
LeetCode1481~1500题目解析
java·leetcode
文丑颜不良啊6 小时前
LeetCode1381~1400题目解析
java·leetcode
是main不是漫7 小时前
【双指针——移动零】数组划分类题目的入门基石
c++·算法
深圳市快瞳科技有限公司8 小时前
野外鸟类AI识别落地实录:输入适配、结构化输出、去重聚合与置信度分流的工程实践
算法·计算机视觉·鸟类识别·鸟类ai识别·野外鸟类观测·林业调查
专注仿真9 小时前
梯度提升类(XFBoost)算法详解与代码实例
开发语言·人工智能·python·算法·大模型训练·控制算法
小豆庄9 小时前
视频遮罩追踪退场后ID撞号的排查—多目标场景下的失效
opencv·算法·bug·视频·python3.11