Нахождение анаграмм для данного слова

Два слова являются анаграммами, если одно из них имеет те же символы, что и другое слово.

Пример :Anagram & Амп;Nagaram анаграммы (без учета регистра).

Сейчас есть много вопросов, подобных этому. Вот пара подходов, чтобы определить, являются ли две строки анаграммами:

1) Sort струны и сравнить их.

2) Создатьfrequency map для этих строк и проверьте, являются ли они одинаковыми или нет.

Но в этом случае нам дают слово (для простоты, давайте примем только одно слово, и оно будет иметь только анаграммы из одного слова), и нам нужно найти анаграммы для этого.

Решение, которое я имею в виду, заключается в том, что мы можемgenerate all permutations для слова и проверьте, какое из этих словexist in the dictionary  , Но ясно, что это крайне неэффективно. Да, словарь тоже доступен.

Итак, какие у нас есть альтернативы?

Я также читал в аналогичной теме, что что-то можно сделать с помощьюTries но этот человек не объяснил, что такое алгоритм и почему мы в первую очередь использовали Trie, просто была предусмотрена реализация в Python или Ruby. Так что это не очень помогло, поэтому я создал эту новую тему. Если кто-то хочет поделиться своей реализацией (кроме C, C ++ или Java), пожалуйста, объясните это тоже.

Ответы на вопрос(12)

Ваш ответ на вопрос