题目链接:Leetcode 1653. 使字符串平衡的最少删除次数
题意:
给你一个字符串 s
,它仅包含字符 'a'
和 'b'
。
你可以删除 s
中任意数目的字符,使得 s
平衡 。我们称 s
平衡的 当不存在下标对 (i,j)
满足 i < j
且 s[i] = 'b'
同时 s[j]= 'a'
。
请你返回使 s
平衡 的 最少 删除次数。
解题思路:
从左向右,a如果在左边,不用删除,b 如果在右边不用删除
class Solution {
public:
int minimumDeletions(string s) {
int n = s.size();
int ans = 0, res = 0;
int left = 0;
for(left = 0; left < n; left++) { // 左边一直是a
if(s[left] != 'a') {
break;
}
}
for(int i = left; i <= n; i++) {
if(s[i] == 'a') { // 出现a的个数
ans++;
} else { // 开始出现b的个数
res++;
}
if(ans > res) { // 如果要删除的a的个数大于删除b的个数,那么删除b
ans = res;
}
}
return min(ans, res); // a 和 b 哪个少删除哪个
}
};