Maximum Number of Balloons
Introducción
Analizamos un problema representativo de entrevistas técnicas para posiciones de software engineer en grandes tecnológicas: Maximum Number of Balloons. Es un reto clásico para evaluar razonamiento lógico y manipulación eficiente de cadenas (strings). En este artículo lo descomponemos desde cero: enunciado, errores comunes y construcción de la solución óptima paso a paso.
Enunciado del problema
Dado un string text, puedes utilizar cada carácter a lo sumo una vez para formar la palabra "balloon" todas las veces que sea posible. Tu objetivo es determinar cuántas veces puedes formar la palabra "balloon" con las letras presentes en text.
Entrada: text = "nlaebolko"
Salida: 1
Se puede formar “balloon” una vez.
Entrada: text = "loonbalxballpoon"
Salida: 2
Se puede formar “balloon” dos veces.
Entrada: text = "leetcode"
Salida: 0
Faltan varias letras para formar “balloon”.
Observaciones clave
Para formar balloon necesitas estas letras y cantidades:
count('b'), count('a'), count('l') // 2,
count('o') // 2, count('n'). Se divide por 2 en l y o porque cada “balloon” usa dos de cada una.
Paso a paso: solución óptima
- Contar frecuencias. Calcula cuántas veces aparece cada letra {b, a, l, o, n}.
- Dividir por la cantidad requerida. Para
lyodivide entre 2; parab,a,nes entre 1. - Tomar el mínimo. El resultado es el mínimo de esos cocientes.
Implementación en Python
from collections import Counter
def maxNumberOfBalloons(text: str) -> int:
counts = Counter(text)
return min(
counts.get('b', 0) // 1,
counts.get('a', 0) // 1,
counts.get('l', 0) // 2,
counts.get('o', 0) // 2,
counts.get('n', 0) // 1
)
Implementación en JavaScript
function maxNumberOfBalloons(text) {
const counts = { b: 0, a: 0, l: 0, o: 0, n: 0 };
for (const ch of text) {
if (ch in counts) counts[ch]++;
}
return Math.min(
counts.b,
counts.a,
Math.floor(counts.l / 2),
Math.floor(counts.o / 2),
counts.n
);
}
Complejidad
- Tiempo: O(n), un recorrido del string.
- Espacio: O(1), letras acotadas.
Casos de prueba adicionales
| Entrada | Salida | Explicación |
|---|---|---|
"balloonballoon" | 2 | Se puede formar exactamente dos veces |
"bbaallllooooonnn" | 2 | Limitan b, a y n. |
"" | 0 | Cadena vacía. |
"balon" | 0 | Faltan letras repetidas |
"ballooon" | 1 | Sobra una o pero falta una l. |
Obtén un 50% de descuento en tu primera compra de cursos de algoritmos .
