Задать вопрос
@turchik2808

Как сделать Поиск анаграмм в заданном словаре?

Здравствуйте, подскажите идею, как реализовать поиск анаграмм в заданном словаре (хотя бы визуально, как это может выглядеть). Просто не совсем понимаю принцип поиск из словаря, из текста более менее понятно.
  • Вопрос задан
  • 741 просмотр
Подписаться 2 Простой 16 комментариев
Пригласить эксперта
Ответы на вопрос 2
@Sumor
Простая идея для русского языка.
Для словаря строите следующий индекс:
Каждой букве (кроме Е=Ё) ставите в соответствие число: А=0 Б=1 ... Я=31
Если буква встречается в слове, то взводите соответствующий бит числа (вне зависимости от количества букв)
В этом случае вам для русского языка хватит UInt32 (unsigned int).
АБАК = 1000000011

Для поиска анаграммы составляете такое же число и отбираете претендентов из словаря. Затем претендентов окончательно выбираете по точному совпадению встречающихся букв.
Ответ написан
Для поиска анаграмм состоящих из одинакового количества букв или меньшего числа букв я делал так:
Для того чтобы слово из словаря можно было считать анаграммой нашего слова должно совпасть три условия:
1. Количество букв в словарном слове не должно превышать количество букв в нашем слове (простая проверка на длину слова).
2. Также слово в словаре не должно содержать такие буквы, которые отсутствует в нашем слове. Например - слово "бур" не является анаграммой слова "робот".
3. Количество одинаковых букв в словарном слове не должно превышать их количество в искомом слове. Данный пункт проверял через составление и сравнение двух ассоциативных массивов вида: "буква" -> "количество ее повторений". Например: "тара" - [т] -> 1, [а] -> 2, [р] -> 1.
Когда эти три условия совпадут слово можно считать анаграммой.
Вот рабочий код: https://tinyurl.com/rskes9g
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы