Классически проблемы поиска слов могут быть эффективно решены с помощью Trie .
Я бы предложил найти список слов, скажем, из WordNet , сохранить его в Trie, а затем выполнить быстрый поиск возможных слов.
Решение будет иметь вид:
- загрузить список слов
- сохранить список слов в дереве
- принять ввод для расшифровки слова
попробуйте перестановки i = 1..N
а. перестановка поиска я использую три
б. если есть положительный результат, сохраните его для отображения
с. итерация (i ++)
повторить с 3.
редактирование:
Примечание: здесь для любого символа длины N может быть N! требуемый поиск (для 7 символов это будет 5040). Вам следует подумать о внесении некоторых оптимизаций в алгоритм поиска Trie. Например, вы получаете значительную эффективность, заблаговременно исключая недопустимые подстроки, а не повторяя конечные перестановки.
например. учитывая слово apple, если у вас была перестановка, в которой вы выбрали «ppl» в качестве первых трех символов, слово не будет найдено. Таким образом, независимо от того, как вы переставляете a и e в конце, вы не можете составить слово. Раннее завершение перестановок может быть важно для эффективности вашего алгоритма.