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.

questionAnswers(12)

yourAnswerToTheQuestion