LeetCode - 680. Valid Palindrome II 删除一个字符判断能否构成回文

发布于 2024-07-30 08:52:50 字数 1310 浏览 13 评论 0

题目

解析

暴力枚举删除每一个位置的方法肯定是行不通的。

这里需要用到回文串的性质。

看下面两个例子:

案例一: e a d c b c a e

另一种情况:

e a b f f b e a e

所以解题步骤:

设置两个指针,往中间靠拢,然后当遇到 s[L] != s[R] 的时候,就判断 [L + 1, R] 或者 [L, R-1] 部分可以不可以构成回文串,只要有其中一个可以,就返回 true 即可。

class Solution {
    public boolean validPalindrome(String s) {
        int L = 0, R = s.length() - 1;
        while(L < R){
            if(s.charAt(L) != s.charAt(R)){
                return isPalindrome(s, L+1, R) || isPalindrome(s, L, R-1); 
            }else {
                L++;
                R--;
            }
        }
        return true;
    }
    
    private boolean isPalindrome(String s, int L, int R){
        while(L < R)
            if(s.charAt(L++) != s.charAt(R--))
                return false;
        return true;
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

浪荡不羁

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

我们的影子

文章 0 评论 0

素年丶

文章 0 评论 0

南笙

文章 0 评论 0

18215568913

文章 0 评论 0

qq_xk7Ean

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文