Menu
CoddyTech

Group Anagrams

Recibes una lista de palabras strs. Dos palabras son anagramas cuando una es una reordenación de la otra: las mismas letras, cada una usada el mismo número de veces. Agrupa cada palabra con todos sus anagramas y devuelve una cadena por grupo: las palabras del grupo en orden alfabético, separadas por espacios simples. Ordena los grupos alfabéticamente según su primera palabra.

Si una palabra aparece dos veces, se incluye dos veces en su grupo; y una palabra sin anagramas forma un grupo de una sola palabra. El orden alfabético es el orden del diccionario: aab va antes que ab, y ab antes que abc.

Función

groupAnagrams(strs: string-array) → string-array
strsstring-array
las palabras para agrupar, solo letras minúsculas
Devuelvestring-array
una cadena por grupo: sus palabras ordenadas y unidas por espacios, grupos ordenados por su primera palabra

Restricciones

  • 1 ≤ strs.length ≤ 4000
  • 1 ≤ strs[i].length ≤ 8
  • Cada palabra contiene únicamente letras minúsculas del inglés.

Ejemplos

Entrada
strs = ["listen", "stone", "silent", "notes", "enlist", "onset", "tones", "apple"]
Salida
["apple", "enlist listen silent", "notes onset stone tones"]
Explicación
enlist, listen y silent usan cada una e, i, l, n, s y t una vez. notes, onset, stone y tones comparten e, n, o, s y t, y apple no coincide con ninguna. Ordenados por la primera palabra, los grupos son apple, enlist, notes.

lock icon+15 pruebas ocultas al enviar

challenge icon

Para ir más allá

Supón que las palabras pudieran contener cualquier carácter Unicode en lugar de solo 26 letras minúsculas. ¿Cuál de las dos claves, las letras ordenadas o los recuentos de letras, sigue funcionando y qué cambiarías en ella?

Restablecer código
def groupAnagrams(strs):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Caso 3

Entrada

strs = ["listen", "stone", "silent", "notes", "enlist", "onset", "tones", "apple"]

Esperado

["apple", "enlist listen silent", "notes onset stone tones"]