[
string
dp
]
BinarySearch 0310 As Before Bs
Problem statement
https://binarysearch.com/problems/As-Before-Bs/
Solution
Equal to Leetcode 1653. Minimum Deletions to Make String Balanced. The idea is to use dp with states end_a and end_b, where end_a is the minimum number of deletions such that we have last symbol a and similar for b.
Complexity
It is O(n) for time and O(1) for space.
Code
class Solution:
def solve(self, s):
end_a, end_b = 0,0
for val in s:
if val == "A":
end_b += 1
else:
end_a, end_b = end_a + 1, min(end_a, end_b)
return min(end_a, end_b)