Skip to content

Commit d7d7a5b

Browse files
2 parents 0f1b20c + ac59ffc commit d7d7a5b

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ Each day (ideally) we'll attempt the daily [leetcode](https://leetcode.com) prob
3838
| July 27, 2024 | [2976](https://leetcode.com/problems/minimum-cost-to-convert-string-i/description/?envType=daily-question) | [Click here](https://github.com/ContextLab/leetcode-solutions/tree/main/problems/2976) | 🟡 Medium |
3939
| July 28, 2024 | [2045](https://leetcode.com/problems/second-minimum-time-to-reach-destination/description/?envType=daily-question) | [Click here](https://github.com/ContextLab/leetcode-solutions/tree/main/problems/2045) | 🔴 Hard |
4040
| July 29, 2024 | [1395](https://leetcode.com/problems/count-number-of-teams/description/?envType=daily-question) | [Click here](https://github.com/ContextLab/leetcode-solutions/tree/main/problems/1395) | 🟡 Medium |
41+
| July 30, 2024 | [1653](https://leetcode.com/problems/minimum-deletions-to-make-string-balanced/description/?envType=daily-question) | [Click here](https://github.com/ContextLab/leetcode-solutions/tree/main/problems/1653) | 🟡 Medium |
4142

4243
# Join our discussion!
4344

problems/1653/jeremymanning.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# [Problem 1653: Minimum Deletions to Make String Balanced](https://leetcode.com/problems/minimum-deletions-to-make-string-balanced/description/?envType=daily-question)
2+
3+
## 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`.
7+
8+
## 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
10+
11+
## Attempted solution(s)
12+
```python
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
35+
```
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)