Как найти, если слово существует в очень большом файле оптимизированным способом? - PullRequest
0 голосов
/ 07 мая 2018

Игра идет так: игрок вводит количество гласных в [0..10].Мы генерируем согласные с 10 входами (гласными), чтобы наконец отобразить 10 неупорядоченных букв.Затем игрок пытается сформировать самое длинное слово из возможных букв.

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

Что такоелучший способ поиска через это?Мои лучшие две идеи:

  1. Разделите слово в разных файлах, проиндексированных по количеству гласных в словах, хранящихся в нем.
  2. Используйте Streamer().метод фильтра, использующий функцию, которая возвращает количество гласных в слове.

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

Надеюсь, я достаточно ясно.

1 Ответ

0 голосов
/ 07 мая 2018

Я предполагаю, что вы используете Java. Если это правда, вы можете хранить все свои слова внутри HashSet<String>.

Устанавливает данные магазина в контейнерах. Поэтому, когда вы ищете слово, jvm сначала найдет блок, в котором может быть это слово, а затем заглянет в этот блок, чтобы проверить, присутствует это слово или нет.

Этот подход аналогичен варианту 1, который вы упомянули. Вся сложность скрыта от вас. вам просто нужно вызвать метод содержит. JVM делает все это для вас за сценой.

    HashSet<String> dictionary = new HashSet<String>();

    //add words to dictionary
    dictionary.add("apple");

    //Returns true if this set contains the specified element. 
    dictionary.contains("apple");
...