【力扣1653】使字符串平衡的最少删除次数
创始人
2024-05-29 11:51:49
0

给你一个字符串 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 <= 105

s[i] 要么是 'a' 要么是 'b'​ 。​

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/minimum-deletions-to-make-string-balanced

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

我觉得这是一道挺典型的前缀和的题目,但是是假前缀和->如果你想节省空间的话,不用全记。

首先思考人类是怎么做这道题的。

枚举吗?枚举什么?

前a后b,枚举的是断点。

假设我们确定了断点是i这个位置,假设[0,i-1]是a,[i,end]是b,怎么计算要删除多少?

=>[0,i-1]中b的个数+[i,end]中a的个数。

那每次统计i点需要删除多少的时候需要重新统计a和b的个数吗?不需要,只需要根据当前的数决定谁加谁减就可以了。

b是正序前缀和,a是逆序前缀和。

class Solution {
public:int minimumDeletions(string s) {int l=s.length();if(l==1){return 0;}int conta=0;int contb=0;if(s[l-1]=='a'){conta=1;}if(s[0]=='b'){contb=1;}for(int i=l-2;i>=0;--i){if(s[i]=='a'){conta++;}  }int cont=conta;if(s[0]=='a'){conta--;}for(int i=1;i

但是感觉两次循环还是得有的,毕竟方向不一样。

动态规划的方法是我最开始的思路,但是我想不通也写不出来,现在还没看懂,谁给我仔细讲讲。。。

相关内容

热门资讯

“黑马”县的“金”点子 转自:中国银行保险报网□崔艳丽 本报记者 章丽铃长久以来,安徽省滁州市凤阳县因“朱元璋故里”“小岗村...
匠心守护绿茵烽火 智慧赋能城市...   初夏的江苏,绿茵场上烽火正燃。  由江苏省体育局与江苏省各设区市政府联合主办的江苏省城市足球联赛...
半月4家未盈利企业IPO获受理... 导读:虽然科创板、创业板已经开始受理未盈利企业IPO,但对于多数未盈利企业而言,港交所上市的可能性仍...
求一些恋爱养成游戏 求一些恋爱养成游戏翼之梦论坛知道吧?进去注册个号,有一个PC中文版的版块,进去什么都有。这个游戏不到...
为什么山上有老虎? 为什么山上有老虎?因为山上比较便于躲藏,也有各种小动物,是比较适合此类猛兽生活的环境
<<济南的冬天&g... <<济南的冬天>>板书设计有谁可以告诉我的板书设计在哪里可以找到?知到的朋友们请回答我好吗? 济...
带丈的四字成语 带丈的四字成语 火冒三丈软红十丈日落千磨颂迹丈尺水丈波百丈竿头食必方丈巾帼丈夫女中丈夫食前方丈白...
淮南:共同切磋比拼 技能大赛展... (转自:淮南日报)共同切磋比拼 技能大赛展风采“各位评委老师好,我们本次的参赛主题叫做《檐角飞云处 ...
幸福从天而降电视剧结局 幸福从天而降电视剧结局  1、《幸福从天而降》结局:天蓝用自己的经历告诫天晴,终于让天判孝晴打消了离...
51比50,副总统万斯投下关键... 转自:中安在线当地时间7月1日,美国国会参议院通过全面减税和支出法案,并提交众议院。美国参议院当天上...