View Maximum Number of Balloons on LeetCode
Statistics
Time Spent Coding
5 minutes
Time Complexity
O(n) - Each character from the input string must be seen, resulting in the O(n) time complexity.
Space Complexity
O(1) - Although a dictionary is declared, it will only ever contain five characters, resulting in the O(1) space complexity.
Runtime Beats
94.45% of other submissions
Memory Beats
74.33% of other sumbissions
Explanation
The algorithm counts the frequency of each character and stores it in char_counter.
The algorithm then keeps track of the smallest frequency out of all the characters in “balon” because it can only make as many “balloon” strings as the smallest frequency permits. To accommodate for the double characters “o” and “l,” floor the frequency of their appearances by a factor of 2.
Finally, return the count
.
Solution
1
2
3
4
5
6
7
8
9
10
11
class Solution:
def maxNumberOfBalloons(self, text: str) -> int:
char_counter = Counter(text)
freq = float("inf")
for c in "balon":
if c is 'l' or c is 'o':
freq = min(freq, char_counter[c]//2)
else:
freq = min(freq, char_counter[c])
return freq