Encontrando anagramas para uma determinada palavra
Duas palavras são anagramas se uma delas tiver exatamente os mesmos caracteres da outra palavra.
Exemplo:Anagram
& Nagaram
são anagramas (insensíveis a maiúsculas e minúsculas).
Agora há muitas perguntas semelhantes a isso. Algumas abordagens para descobrir se duas cadeias são anagramas são:
1) Sort
as cordas e compará-las.
2) Criar umafrequency map
para essas cadeias de caracteres e verifique se elas são iguais ou não.
Mas neste caso, somos dados com uma palavra (por uma questão de simplicidade, vamos assumir apenas uma única palavra e ela terá apenas anagramas de uma única palavra) e precisamos encontrar anagramas para isso.
Solução que tenho em mente é que, podemosgerar todas as permutações para a palavra e verifique qual dessas palavrasexistem no dicionário . Mas claramente, isso é altamente ineficiente. Sim, o dicionário está disponível também.
Então, quais alternativas nós temos aqui?
Eu também li em um tópico semelhante que algo pode ser feito usandoTries
mas a pessoa não explicou o que era o algoritmo e por que usamos o Trie em primeiro lugar, apenas uma implementação foi fornecida em Python ou Ruby. Então, isso não foi muito útil, e é por isso que criei esse novo tópico. Se alguém quiser compartilhar sua implementação (diferente de C, C ++ ou Java), por favor, explique-o também.