Menu
CoddyTech

Group Anagrams

Você recebe uma lista de palavras strs. Duas palavras são anagramas quando uma é uma reorganização da outra: as mesmas letras, cada uma usada o mesmo número de vezes. Coloque cada palavra em um grupo com todos os seus anagramas e retorne uma string por grupo: as palavras do grupo em ordem alfabética, separadas por espaços simples. Ordene os grupos alfabeticamente pela primeira palavra.

Uma palavra que aparece duas vezes é listada duas vezes em seu grupo, e uma palavra sem anagramas forma um grupo de uma palavra. Ordem alfabética significa ordem de dicionário: aab vem antes de ab, e ab antes de abc.

Função

groupAnagrams(strs: string-array) → string-array
strsstring-array
as palavras a agrupar, somente letras minúsculas
Retornastring-array
uma string por grupo: suas palavras ordenadas e unidas por espaços, grupos ordenados pela primeira palavra

Restrições

  • 1 ≤ strs.length ≤ 4000
  • 1 ≤ strs[i].length ≤ 8
  • Cada palavra contém apenas letras minúsculas do inglês.

Exemplos

Entrada
strs = ["listen", "stone", "silent", "notes", "enlist", "onset", "tones", "apple"]
Saída
["apple", "enlist listen silent", "notes onset stone tones"]
Explicação
enlist, listen e silent usam cada uma as letras e, i, l, n, s e t uma vez. notes, onset, stone e tones compartilham as letras e, n, o, s e t, e apple não corresponde a nenhuma. Em ordem da primeira palavra, os grupos são apple, enlist, notes.

lock icon+15 testes ocultos ao enviar

challenge icon

Para ir além

Suponha que as palavras possam conter quaisquer caracteres Unicode, em vez de apenas 26 letras minúsculas. Qual das duas chaves, letras ordenadas ou contagens de letras, ainda funciona, e o que você mudaria nela?

Redefinir código
def groupAnagrams(strs):
    # Escreva o código aqui
Casos de teste

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"]