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;}
}

相关内容

热门资讯

修改工具教程版!英雄斗地主智能... 英雄斗地主这个游戏其实有挂的,确实是有挂的,需要了解加客服微信:【7198902】, 很多玩家在这款...
修改工具教程版!仙界道游智能插... 修改工具教程版!仙界道游智能插件是真的,分享详细开挂攻略一、仙界道游AI软件牌型概率发牌机制”必胜“...
修改工具教程版!浙江闲乐十三水... 修改工具教程版!浙江闲乐十三水智能插件是真的,分享详细开挂攻略一、浙江闲乐十三水AI软件牌型概率发牌...
修改工具教程版!闲易智能插件是... 亲,闲易这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,闲易的开挂软件,名称叫闲易...
修改工具教程版!新胜麻将智能插... 您好,新胜麻将这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
修改工具教程版!筑志红中麻将智... 亲,筑志红中麻将这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,筑志红中麻将的开挂...
修改工具教程版!鼎盛休闲智能插... 修改工具教程版!鼎盛休闲智能插件是真的,分享详细开挂攻略;原来确实真的有挂(需添加指定薇719890...
修改工具教程版!胡乐邯郸麻将智... 胡乐邯郸麻将这个游戏其实有挂的,确实是有挂的,需要了解加客服微信:【7198902】, 很多玩家在这...
修改工具教程版!么么棋牌智能插... 修改工具教程版!么么棋牌智能插件是真的,分享详细开挂攻略;原来确实真的有挂(需添加指定薇719890...
修改工具教程版!飞鱼智能插件是... 您好,飞鱼这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打牌都...
修改工具教程版!猫猫学数智能插... 猫猫学数这个游戏其实有挂的,确实是有挂的,需要了解加客服微信:【7198902】, 很多玩家在这款游...
修改工具教程版!梧桐树智能插件... 梧桐树这个游戏其实有挂的,确实是有挂的,需要了解加客服微信:【7198902】, 很多玩家在这款游戏...
修改工具教程版!凌龙棋牌智能插... 修改工具教程版!凌龙棋牌智能插件是真的,分享详细开挂攻略是一款可以让一直输的玩家,快速成为一个“必胜...
修改工具教程版!随便玩红拐弯智... 您好:随便玩红拐弯确实真的有挂,软件加微信【7198902】确实是有挂的,很多玩家在这款游戏中打牌都...
修改工具教程版!如意智能插件是... 如意这个游戏其实有挂的,确实是有挂的,需要了解加客服微信:【7198902】, 很多玩家在这款游戏中...
修改工具教程版!欢乐二七十智能... 修改工具教程版!欢乐二七十智能插件是真的,分享详细开挂攻略1、让任何用户在无需AI插件第三方神器的情...
修改工具教程版!老铁十三水智能... 修改工具教程版!老铁十三水智能插件是真的,分享详细开挂攻略是一款可以让一直输的玩家,快速成为一个“必...
修改工具教程版!牵手长沙棋牌智... 修改工具教程版!牵手长沙棋牌智能插件是真的,分享详细开挂攻略一、牵手长沙棋牌AI软件牌型概率发牌机制...
修改工具教程版!微乐浙江麻将智... 您好:微乐浙江麻将确实真的有挂,软件加微信【7198902】确实是有挂的,很多玩家在这款游戏中打牌都...
修改工具教程版!乐虎棋牌智能插... 乐虎棋牌这个游戏其实有挂的,确实是有挂的,需要了解加客服微信:【7198902】, 很多玩家在这款游...