leetcode

Leetcode Solutions (0x6A73)
git clone https://git.pngu.org/leetcode
Log | Files | Refs | Submodules | README

commit c97ecf064b7843f9abe529b0a6e0638ec103ddd9
parent 39db6fb1c89596bba2efd036de5b4834b0f38642
Author: Jack Sangdahl <jack@pngu.org>
Date:   Fri,  6 Feb 2026 21:49:57 -0700

1653. minimum deletions to make string balanced

Diffstat:
Mmin_deletions_balance_str.c | 23+++++++++++++----------
Mmin_deletions_balance_str.py | 13++++++-------
2 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/min_deletions_balance_str.c b/min_deletions_balance_str.c @@ -10,20 +10,23 @@ */ int minimumDeletions(char *s) { - int cnt = 0, ans = 0; - for (int i = 0; s[i] != '\0'; i++) { - if (s[i] == 'b') { + int cnt = 0, del = 0; + while (*s) { + if (*s == 'a') + del = fmin(++del, cnt); + else cnt++; - } else if (cnt) { - ans++; - cnt--; - } + *s++; } - return ans; + return del; } int main() { char *s1 = "aababbab", *s2 = "bbaaaaabb"; - printf("%d\n", minimumDeletions(s1)); // expect: 2 - printf("%d\n", minimumDeletions(s2)); // expect: 2 + int r1 = minimumDeletions(s1); + int r2 = minimumDeletions(s2); + printf("%d\n", r1); // expect: 2 + assert(r1 == 2); + printf("%d\n", r1); // expect: 2 + assert(r2 == 2); } diff --git a/min_deletions_balance_str.py b/min_deletions_balance_str.py @@ -15,14 +15,13 @@ class Solution(object): :type s: str :rtype: int """ - a, b, cnt = s.count("a"), 0, len(s) - for c in s: - if c == "b": - cnt = min(cnt, a + b) - b += 1 + cnt, rem = 0, 0 + for i in s: + if i == "a": + rem = min(rem + 1, cnt) else: - a -= 1 - return min(cnt, b) + cnt += 1 + return rem if __name__ == "__main__":