Leetcode.1653 使字符串平衡的最少删除次数
创始人
2024-05-29 15:28:51
0

题目链接

Leetcode.1653 使字符串平衡的最少删除次数 Rating : 1794

题目描述

给你一个字符串 s,它仅包含字符 'a''b'​​​​ 。

你可以删除 s中任意数目的字符,使得 s平衡 。当不存在下标对 (i,j)满足 i < j,且 s[i] = 'b'的同时 s[j]= 'a',此时认为 s平衡 的。

请你返回使 s平衡 的 最少 删除次数。

示例 1:

输入:s = “aababbab”
输出:2
解释:你可以选择以下任意一种方案:
下标从 0 开始,删除第 2 和第 6 个字符(“aababbab” -> “aaabbb”),
下标从 0 开始,删除第 3 和第 6 个字符(“aababbab” -> “aabbbb”)。

示例 2:

输入:s = “bbaaaaabb”
输出:2
解释:唯一的最优解是删除最前面两个字符。

提示:

  • 1<=s.length<=1051 <= s.length <= 10^51<=s.length<=105
  • s[i]要么是 'a'要么是 'b'​。​

分析:

本题使用 前后缀分解 求解。

我们做出如下定义:

  • 定义 left(i)left(i)left(i)为 s[0,i]'a'的数量
  • 定义 right(i)right(i)right(i)为 s[i,n-1]'b'的数量

所以 n - (left[i] + right[i + 1])就是以 i为分界点,使 s为平衡字符串的删除次数。所以让 i[0,n-1]遍历一遍,就可以求得最少的删除次数。

时间复杂度: O(n)O(n)O(n)

C++代码:


class Solution {
public:int minimumDeletions(string s) {int n = s.size();vector left(n+1),right(n+1);for(int i = 1;i <= n;i++) left[i] = left[i-1] + (s[i-1] == 'a');for(int i = n - 1;i >= 0;i--) right[i] = right[i+1] + (s[i] == 'b');int ans = n;for(int i = 0;i <= n;i++){int d =  n - left[i] - right[i];ans = min(ans,d);}return ans;}
};

Java代码:


class Solution {public int minimumDeletions(String s) {int n = s.length();int[] left = new int[n+1];int[] right = new int[n+1];for(int i = 1;i <= n;i++) left[i] = left[i-1] + (s.charAt(i-1) == 'a' ? 1 : 0);for(int i = n - 1;i >= 0;i--) right[i] = right[i+1] + (s.charAt(i) == 'b' ? 1 : 0);int ans = n;for(int i = 0;i <= n;i++){int d = n - (left[i]+right[i]);ans = Math.min(ans,d);}return ans;}
}

相关内容

热门资讯

安卓系统打电话断,探究原因与解... 你是不是也遇到过这种情况?手机屏幕上显示着联系人名字,手指轻轻一点,电话却怎么也打不出去。这可真是让...
安卓平板系统升级关闭,揭秘操作... 亲爱的安卓平板用户们,你们是不是也遇到了这样的烦恼:每次系统升级,都要忍受漫长的等待,甚至有时候升级...
安卓系统怎么修改密码,轻松掌握... 手机里的安卓系统密码忘记了?别急,让我来给你支个招,让你轻松修改密码,重获手机自由! 一、解锁密码的...
优酷对安卓系统要求,揭秘安卓系... 你有没有发现,最近优酷的视频越来越高清了?是不是觉得看视频的体验提升了不少?不过,你知道吗?想要享受...
安卓两个系统切换系统,畅享多系... 你有没有想过,你的安卓手机里竟然可以藏着两个完全不同的系统呢?没错,就是那种一个系统用来工作,另一个...
苹果跟安卓的系统区别 你有没有发现,手机的世界里,苹果和安卓就像是两个截然不同的星球?它们各有各的特色,各有各的粉丝,今天...
安卓系统360抢红包,安卓系统... 你有没有发现,现在不管是聚会还是日常,抢红包已经成了大家不可或缺的娱乐活动呢!而在这其中,安卓系统的...
安卓系统手机wifi连不上wi... 亲爱的手机控们,你是否也有过这样的烦恼:明明家里WiFi信号满格,可就是连不上手机?别急,今天就来帮...
16s安卓系统,创新与变革的科... 你有没有发现,最近你的手机是不是变得越来越流畅了?没错,我要说的就是那个让无数安卓用户心动的16s安...
一加三安卓8.0系统,畅享智能... 你有没有听说最近手机圈里的一股新潮流?那就是一加三安卓8.0系统!这可不是什么小打小闹的更新,而是一...
查安卓系统文件管理,深度解析与... 你有没有想过,你的安卓手机里那些密密麻麻的文件,其实就像一个隐藏的宝藏库呢?今天,就让我带你一起探索...
好用的车机安卓系统,好用的车机... 你有没有发现,现在开车的时候,车机系统的重要性简直堪比手机里的操作系统呢!想象当你坐在驾驶座上,手握...
vivo是安卓系统还是ios系... 你有没有想过,手机里的那个小家伙,vivo,它到底是在安卓的海洋里遨游,还是在iOS的苹果园里悠闲地...
安卓手机连接到linux系统,... 你有没有想过,你的安卓手机竟然可以和Linux系统来个亲密接触呢?没错,就是那种让电脑世界都为之振奋...
wp系统可以装安卓软件,轻松体... 哇,你知道吗?现在wp系统也能装安卓软件啦!这可是个让人兴奋的消息,是不是感觉像打开了新世界的大门?...
导航linux系统和安卓系统哪... 你有没有想过,为什么你的手机、平板电脑或者智能手表上总是装着那个安卓系统?而你的车载导航、智能电视或...
安卓系统精简rom下载,轻松打... 你有没有想过,你的安卓手机其实可以更轻快、更流畅?没错,就是通过下载一个精简版的ROM系统!今天,就...
安卓系统能查找手机吗,如何查找... 你有没有遇到过手机不见了,心里那个急啊!别担心,今天就来跟你聊聊安卓系统里那个神奇的查找手机功能,让...
安卓系统的选词搜索,智能选词搜... 你有没有发现,在使用安卓手机的时候,有时候想找某个词,却怎么也找不到?别急,今天就来聊聊安卓系统的选...
悦联系统安卓大屏,引领智能交互... 你有没有发现,最近手机屏幕越来越大,仿佛整个世界都缩小到了掌心之间?这不,今天就来聊聊一个特别有意思...