栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

最多删除一个字符得到回文

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

最多删除一个字符得到回文

最多删除一个字符得到回文

题目:

给定一个非空字符串 s,请判断如果 最多 从字符串中删除一个字符能否得到一个回文字符串。

示例 1:
输入: s = "aba"
输出: true

示例 2:
输入: s = "abca"
输出: true
解释: 可以删除 "c" 字符 或者 "b" 字符

示例 3:
输入: s = "abc"
输出: false

class Solution {
    public boolean validPalindrome(String s) {
        char ch[] = s.toCharArray();
        int l = 0, r = ch.length - 1;
        while(l < r) {
            if(ch[l] == ch[r]) {
                l++;
                r--;
            } else {
                return isPalindrome(ch, l, r - 1) || isPalindrome(ch, l + 1, r);
            }
        }

        return true;
    }

    private boolean isPalindrome(char[] ch, int l, int r) {
        for (int i = l, j = r; i < j; ++i, --j) {
            char c1 = ch[i], c2 = ch[j];
            if (c1 != c2) {
                return false;
            }
        }
        return true;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/738825.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号