Skip to content

Commit ac59ffc

Browse files
My solution for 1653
1 parent c09ded0 commit ac59ffc

File tree

1 file changed

+35
-2
lines changed

1 file changed

+35
-2
lines changed

problems/1653/jeremymanning.md

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,44 @@
11
# [Problem 1653: Minimum Deletions to Make String Balanced](https://leetcode.com/problems/minimum-deletions-to-make-string-balanced/description/?envType=daily-question)
22

33
## Initial thoughts (stream-of-consciousness)
4+
- This doesn't seem so bad-- I think we can solve it in $O(n)$ time (where $n$ is the length of the string)
5+
- Let's keep track of the number of `b`s strictly to the left of index `i`, and the number of `a`s strictly to the right of index `i`. We can fill these in iteratively (the `b`s are filled in using a forward pass through `s` and the `a`s are filled in using a backward pass).
6+
- Then we can initialize the number of moves to `float('inf')`. Now, loop through each index (`i`) in `s` again, and see if `left_bs[i] + right_as[i] < min_moves`.
47

58
## Refining the problem, round 2 thoughts
9+
- Let's just go with this...I can't think of any edge cases that will affect how we solve this
610

711
## Attempted solution(s)
812
```python
9-
class Solution: # paste your code here!
10-
...
13+
class Solution:
14+
def minimumDeletions(self, s: str) -> int:
15+
left_bs = [0] * len(s)
16+
right_as = left_bs.copy()
17+
18+
b_count = int(s[0] == 'b')
19+
for i in range(1, len(s)):
20+
left_bs[i] = b_count
21+
if s[i] == 'b':
22+
b_count += 1
23+
24+
a_count = int(s[-1] == 'a')
25+
for i in range(len(s) - 2, -1, -1):
26+
right_as[i] = a_count
27+
if s[i] == 'a':
28+
a_count += 1
29+
30+
min_moves = float('inf')
31+
for i in range(len(s)):
32+
min_moves = min(min_moves, left_bs[i] + right_as[i])
33+
34+
return min_moves
1135
```
36+
- Given test cases pass
37+
- New test cases (let's just generate random strings of `a`s and `b`s...):
38+
- `s = "baabbbbbbaaaabaaabbbbaaabbbabaabbaababaaaaabbaabaabbbbabbabaabbaabbbbaaabbaaaaaaaaaabbababbabbaaaaba"`: pass
39+
- `s = "aaabaabbaabbaabbaababaaabaaabababababaaaaabbababbbabaaaabababbbabbaabbbbaaababaaabbbabbbabbbabbbaabbaaabbbabaabbbaaababbbaaabbaaaabbbaaaaabbabbbbabaaabbaaabababaabaaaabaabbbabbabbbababbaaabaaaabbaabaabaaaaabbbaaaaaaabaababaabbaababaababbabbabbaababbabbabaabbaaaaaaaabbaababbbaababababbabbabbbababbaabbbbbbbbabbbaaaabaaaaaabbaaabbbababaaababaabababaabababbbaaaabbbaabaabbaaaaabbabbbbabbbaaaaaaabaabaabbabbababbababbbbbbaaaaaabbbababbaababbabbaaaabbaabbbbbbbaabbbbaabaaabbaaaabbabbbaababbabbaabbbbaabababbaaaaabbaaaababbabbabbbbaaaabaabbaaaababbbbbabbabbbababbabbbbbbbbaabbabaabbbabbbaabababbbabbbbabbabbaaaaabbabbbbabbabbabaabbaaaaaabbbabbaaabaabaaaababbababaabbaabbababaaabbbbaaaababababbabbaabbbbbabbaababaaabbbaabaaabaabaabbaababbababababaaabaabaaaaabbabbbaaabbabababbababababbbbaababaabbbabaaaaaabaaaabaaaabaaabaabaababbbbbabbbbaaabbbbababaabbbbbaaabababbababaabbbbbbbbabbbabbaabbbabbbabaabbbaabbbbabbbaaaaaaabbaaaabaabbabbbbbbabababbabaabaabaabaaaaabaaabbbbabbabbbbabbaaaabbababbabbbaaabbaabbbbba"`: pass
40+
- Ok, let's submit!
41+
42+
![Screenshot 2024-07-29 at 8 36 08 PM](https://github.com/user-attachments/assets/3087d858-0c58-434a-aab0-e2a0f937b044)
43+
44+
Solved 🥳!

0 commit comments

Comments
 (0)