Contenido del curso

DFS

BFS

Backtrack

Combinaciones de letras en teclado telefónico

Resumen

Combinar letras a partir de un número telefónico es uno de esos retos clásicos de algoritmos que mezcla recursión, backtracking y pensamiento combinatorio. Si estás preparando entrevistas técnicas o estudiando estructuras de datos, el problema Letter Combinations of a Phone Number te enseña a generar todas las combinaciones posibles de letras asociadas a una secuencia de dígitos, tal como funcionan las teclas de un teléfono.

¿Qué pide el problema Letter Combinations of a Phone Number?

El enunciado es directo: recibes una cadena con dígitos del 2 al 9 y debes devolver, en cualquier orden, todas las combinaciones de letras que esos números podrían representar. La asignación sigue el mapeo clásico de un teclado telefónico, donde cada número agrupa entre tres y cuatro letras.

Hay un detalle importante que no puedes pasar por alto: los dígitos 0 y 1 no tienen letras asignadas. Por eso el rango válido empieza en 2 y termina en 9. Si el input incluyera un 1 o un 0, no habría nada que combinar para esos botones.

¿Qué significa que el problema acepte cualquier orden en la salida? Que no importa la secuencia en la que devuelvas las combinaciones. El evaluador valida el contenido del arreglo, no el orden de los elementos dentro de él.

¿Cómo se interpreta la entrada y la salida del ejercicio?

Piensa en el ejemplo más sencillo: la entrada es la cadena 23. El número 2 representa las letras a, b, c y el número 3 representa d, e, f. Tu tarea es combinar cada letra del primer dígito con cada letra del segundo dígito.

La salida esperada incluye estas combinaciones:

  • a con d, a con e, a con f.
  • b con d, b con e, b con f.
  • c con d, c con e, c con f.

En total, nueve combinaciones. Y aquí viene lo interesante: si agregaras un dígito más, el número de combinaciones crecería de forma multiplicativa, no aditiva. Esa es la pista clave para entender por qué este problema se resuelve naturalmente con recursión o backtracking.

¿Por qué crecen tan rápido las combinaciones? Porque por cada nuevo dígito multiplicas las opciones previas por la cantidad de letras del nuevo botón. Tres dígitos como el 234 ya generan 3 por 3 por 3 igual a 27 combinaciones.

¿Cómo plantear la solución antes de codificar?

Antes de tocar el editor, conviene que dibujes el problema en papel. Imagina tu propio número telefónico marcado en el teclado: ¿qué palabras o secuencias de letras podrías formar si por cada tecla eligieras una letra distinta? Esa visualización mental es la base del enfoque algorítmico.

Un buen punto de partida es identificar tres elementos:

  1. El mapeo entre dígitos y letras, que puedes guardar en un diccionario o estructura similar.
  2. La estrategia de combinación, que recorre cada dígito y une sus letras con las combinaciones acumuladas hasta ese punto.
  3. El caso base, que define qué hacer cuando la cadena de entrada está vacía o cuando ya procesaste todos los dígitos.

No te apresures a escribir código. Resolver el problema en tu cabeza o en una hoja te permite detectar casos borde como entradas vacías, dígitos repetidos o cadenas largas que disparan el número de combinaciones.

¿Qué habilidades algorítmicas entrena este reto?

Resolver Letter Combinations of a Phone Number desarrolla varias habilidades que aparecen una y otra vez en entrevistas técnicas y en problemas reales de software.

  • Pensamiento recursivo: descomponer un problema grande en subproblemas idénticos más pequeños.
  • Backtracking: construir soluciones parciales y retroceder cuando ya exploraste un camino.
  • Manejo de estructuras tipo diccionario o hashmap para asociar dígitos con sus letras correspondientes.
  • Generación de productos cartesianos, que es exactamente lo que ocurre al combinar letras de varios dígitos.

Ahora es tu turno. Tómate unos minutos para pensar cómo abordarías el problema sin escribir código todavía. ¿Usarías recursión pura, una solución iterativa con bucles anidados o backtracking explícito? Déjame en los comentarios cuál enfoque te parece más natural y por qué.