угадывать слова, используя словарь - PullRequest
3 голосов
/ 10 февраля 2011

Я угадываю ключ менее простого шифра простого замещения.Правило, по которому я оцениваю правильность ключа - это количество английских слов в предполагаемой расшифровке.

Существуют ли в java инструменты для проверки количества английских слов в строке.Например, «thefoitedstateswasat» -> 4 слова «thefortedxyzstateswasathat» -> 5 слов.

Я загрузил список слов и использовал HashSet в качестве словаря.Поскольку я не знаю, какие межсловные пробелы принадлежат тексту, я не могу проверить слова, используя простой словарь.

Спасибо.

Ответы [ 3 ]

1 голос
/ 10 февраля 2011

Извините, я новичок, и у меня пока нет представителя для комментариев.

Но разве код не будет очень медленным, поскольку количество проверок и перестановок очень велико?

Я полагаю, что вам просто нужно форсировать свой путь, используя (n-1) слова, вложенные в цикл.А затем найдите в словаре каждую подстроку.

1 голос
/ 10 февраля 2011

Я дал ответ на подобный вопрос здесь:

Если слово состоит из двух допустимых слов

В нем есть некоторый псевдокод в стиле Java.это может быть приспособлено к тому, что решает эту проблему.

0 голосов
/ 10 февраля 2011

Конечно, есть лучший способ проверить точность вашего ключа?

Но это не главное, вот что я бы сделал:

Использование "quackdogsomethinggodknowswhat"

У меня был бы рекурсивный метод, в котором, начиная с начала строки, я бы вызывал рекурсивный метод для всех слов, с которых начинается предметная строка, в данном случае «qua» и «quack» со строкой notсодержащий слово ("dogomethinggodknowswhat" для шарлатана).Верните все, что больше: 1 + наибольшее значение, возвращаемое из всех вызовов вашего метода ИЛИ 0 + вызов метода для строки, начинающейся с индекса 1 ("uackdogsomethinggodknowswhat").

Это, вероятно, будет работать лучше, если вы сохранитеВаш список слов в каком-то дереве.

Если вам нужен псевдокод, спросите!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...