1653. Minimum Deletions to Make String Balanced

Leetcode link

题目简介

题目给我们一个入参 s,代表一个由 a 与 b 两个字母组成的字符串

题目要求我们删除最少的字符让字符串中不存在 ba 的组合

并且最后返回需要删除的字符数量

解题思路

想要让字符串中没有 ba 的组合,有两种方式:

  1. 删除掉 ba 中的 b
  2. 删除掉 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;

};

results matching ""

    No results matching ""