Нахождение анаграмм для данного слова
Два слова являются анаграммами, если одно из них имеет те же символы, что и другое слово.
Пример :Anagram
& Амп;Nagaram
анаграммы (без учета регистра).
Сейчас есть много вопросов, подобных этому. Вот пара подходов, чтобы определить, являются ли две строки анаграммами:
1) Sort
струны и сравнить их.
2) Создатьfrequency map
для этих строк и проверьте, являются ли они одинаковыми или нет.
Но в этом случае нам дают слово (для простоты, давайте примем только одно слово, и оно будет иметь только анаграммы из одного слова), и нам нужно найти анаграммы для этого.
Решение, которое я имею в виду, заключается в том, что мы можемgenerate all permutations для слова и проверьте, какое из этих словexist in the dictionary , Но ясно, что это крайне неэффективно. Да, словарь тоже доступен.
Итак, какие у нас есть альтернативы?
Я также читал в аналогичной теме, что что-то можно сделать с помощьюTries
но этот человек не объяснил, что такое алгоритм и почему мы в первую очередь использовали Trie, просто была предусмотрена реализация в Python или Ruby. Так что это не очень помогло, поэтому я создал эту новую тему. Если кто-то хочет поделиться своей реализацией (кроме C, C ++ или Java), пожалуйста, объясните это тоже.