楼主: 
oin1104 (是oin的说)   
2024-07-30 11:13:58※ 引述 《enmeitiryous (enmeitiryous)》 之铭言:
:  
: 1653 minimun deletion make string balance
: 题目:
: 给你一个只有a,b两种字母构成的字串s,求最少的deletion数使的新字串中
: a一定出现在任一b前面
:  
思路:
建立一个阵列
记录当前位子出现的a b
利用前缀合来知道如果在这个位子的话
要删除多少a 或b可以让字串符合条件
或是
我直接全部删掉一种
姆咪
```cpp
class Solution {
public:
    int minimumDeletions(string s)
    {
        int len = s.size();
        int as= 0;
        int bs=0;
        vector<int> aaa(len , 0);
        vector<int> bbb(len , 0);
        int res = len;
        for(int i = 0; i < len ; i++)
        {
            if(s[i] == 'a')as++;
            aaa[i] = as;
            if(s[i] == 'b')bs++;
            bbb[i] = bs;
        }
        if(as == 0)return 0;
        if(bs == 0)return 0;
        for(int i = 0 ; i < len ; i ++)
        {
            res = min(bbb[i] + aaa[len-1] - aaa[i] , res);
        }
        res = min(aaa[len-1] , res);
        res = min(bbb[len-1] , res);
        return res;
    }
};
```