Ir al contenido

Problema real Tesla: Maximum Number of Balloons

Estrategia óptima para entrevistas Big Tech
13 de octubre de 2025 por
Problema real Tesla: Maximum Number of Balloons
Deep Skill, Jean Pierre Mandujano
| Todavía no hay comentarios
Maximum Number of Balloons — Deep Skill

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 balloon con las letras presentes en text.

Ejemplo 1

Entrada: text = "nlaebolko"

Salida: 1

Se puede formar “balloon” una vez.

Ejemplo 2

Entrada: text = "loonbalxballpoon"

Salida: 2

Se puede formar “balloon” dos veces.

Ejemplo 3

Entrada: text = "leetcode"

Salida: 0

Faltan varias letras para formar “balloon”.

Observaciones clave

Para formar balloon necesitas estas letras y cantidades:

b × 1 a × 1 l × 2 o × 2 n × 1
Idea clave: la respuesta es min 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

  1. Contar frecuencias. Calcula cuántas veces aparece cada letra {b, a, l, o, n}.
  2. Dividir por la cantidad requerida. Para l y o divide entre 2; para b, a, n es entre 1.
  3. 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"2Se puede formar exactamente dos veces.
"bbaallllooooonnn"2Limitan b, a y n.
""0Cadena vacía.
"balon"0Faltan letras repetidas.
"ballooon"1Sobra una o pero falta una l.


Iniciar sesión dejar un comentario