• LeetCode刷提笔记第1332题


    题目描述:

    给你一个字符串s,它仅由字母 'a' 和 'b' 组成。每一次删除操作都可以从s中删除一个回文子序列

    返回删除给定字符串中所有字符(字符串为空)的最小删除次数。

    「子序列」定义:如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到,那么这个字符串就是原字符串的一个子序列。

    「回文」定义:如果一个字符串向后和向前读是一致的,那么这个字符串就是一个回文。

     题目来源:力扣(LeetCode)

    解题思路:

    这个题目的迷惑性很多,因为如果子序列和子串这个概念没有区分开的话将是两种难度的题目,此题目是子序列,那么就容易多了,因为子序列的要求更低,只需要不打乱原来字符串的顺序,就可以随意的取出字符,因此分为三种情况:

      1.原始字符串本身就是一个回文串,那么就只需要清除一次就可以删除所有的字符,所以返回结果为1

      2.原始字符不是一个回文串,因为该字符串只有a和b这两种字符,所以只需要删除两次就可以将全部的字符删掉(第一次将所有的a删除,第二次将所有的b删除)

      3.原始字符串为一个空传,直接返回0

    代码的实现如下:

        public int removePalindromeSub(String s) {
            if (s.length()==0)
                return 0;
            int left = 0;
            int right = s.length()-1;
            char[] chars = s.toCharArray();
            while (left < right){
                if (chars[left++] != chars[right--])
                    return 2;
    
            }
            return 1;
        }
  • 相关阅读:
    模拟75 题解
    模拟74 题解
    模拟73 题解
    模拟72 题解
    前端学习:html基础学习二
    前端学习:html基础学习一
    JavaScrip:Function函数编程
    MYSQL:RELPACE用法
    MYSQL:插入记录检查记录是否存在,存在则更新,不存在测插入记录SQL
    OpenCASCADE Curve Length Calculation
  • 原文地址:https://www.cnblogs.com/yxym2016/p/12549475.html
Copyright © 2020-2023  润新知