09 Sept 2026Go / Python / TypeScriptEasy

Maximum Number of Balloons

Count how many copies of the word balloon can be formed from a text's letters.

Count the five required letters and take the minimum available copies, halving the counts for the two letters used twice.

complexity

O(n) time and O(1) space.

solution files

  • Go maximum-number-of-balloons/solution.go
  • Python maximum-number-of-balloons/solution.py
  • TypeScript maximum-number-of-balloons/solution.ts

Solution files

Gomaximum-number-of-balloons/solution.go
package main

func maxNumberOfBalloons(text string) int {
	count := map[rune]int{}
	for _, character := range text {
		count[character]++
	}
	values := []int{count['b'], count['a'], count['l'] / 2, count['o'] / 2, count['n']}
	answer := values[0]
	for _, value := range values[1:] {
		if value < answer {
			answer = value
		}
	}
	return answer
}
Pythonmaximum-number-of-balloons/solution.py
from collections import Counter


class Solution:
    def maxNumberOfBalloons(self, text: str) -> int:
        count = Counter(text)
        return min(count[class="syntax-string">"b"], count[class="syntax-string">"a"], count[class="syntax-string">"l"] class=class="syntax-string">"syntax-comment">// class="syntax-number">2, count[class="syntax-string">"o"] // class="syntax-number">2, count[class="syntax-string">"n"])
TypeScriptmaximum-number-of-balloons/solution.ts
function maxNumberOfBalloons(text: string): number {
  const count = new Map<string, number>(); for (const character of text) count.set(character, (count.get(character) ?? class="syntax-number">0) + class="syntax-number">1);
  return Math.min(count.get(class="syntax-string">"b") ?? class="syntax-number">0, count.get(class="syntax-string">"a") ?? class="syntax-number">0, Math.floor((count.get(class="syntax-string">"l") ?? class="syntax-number">0) / class="syntax-number">2), Math.floor((count.get(class="syntax-string">"o") ?? class="syntax-number">0) / class="syntax-number">2), count.get(class="syntax-string">"n") ?? class="syntax-number">0);
}