1653. Minimum Deletions to Make String Balanced
题目简介
题目给我们一个入参 s,代表一个由 a 与 b 两个字母组成的字符串
题目要求我们删除最少的字符让字符串中不存在 ba 的组合
并且最后返回需要删除的字符数量
解题思路
想要让字符串中没有 ba 的组合,有两种方式:
- 删除掉 ba 中的 b
- 删除掉 ba 中的 a
但是我们要怎么知道我们应该选择哪一种方式呢?
答案是选择删除 ba 组合中连续数量比较少的那个字母
举个例子:aababbab
我们可以看到第一个 ba 组合是:aababbab
这个时候因为这个组合的 b 跟 a 数量是一样的,所以我们任意删除一个都可以,删除字符数记 1
第二个组合是:aababbab
这个时候我们可以看到 a 的数量比 b 少,所以就把 a 删除,删除字符记 2
结果返回 2
具体编码中,我们只需要在遇到 b 的时候用一个计数器 count 把 b 的数量记下,然后在遇到 a 的时候把 count 的数量减一的同时把删除字符的数量加一即可
Javascript
/**
* @param {string} s
* @return {number}
*/
var minimumDeletions = function(s) {
let count = 0;
let deletion = 0;
for(const c of s) {
if(c === 'b') {
count++;
} else if(count > 0) {
deletion++;
count--;
}
}
return deletion;
};