2016-11-06 13 views
0

Дан массив слов и фраз, получающий ключ, вернитесь:Реализация основной автозаполнение в Java

  • Все слова, которые начинаются с ключевого
  • Все фразы, содержащие слово, начать с ключом

Например:

wordbank = ["bang", "base", "bore", "band", "This is a baffling problem];

key = "ba";

autocomplete(wordbank, key) должен вернуть ["bang", "base", "band", "This is a baffling problem]

Я использовал Trie, чтобы сделать это, но просто интересно, если this is a good solution?

Для запуска, просто введите java Test в терминале. Тестовый пример в ссылке не такой, как здесь.

ответ

1

Код может быть упрощен следующим образом. Добавьте набор результатов автозаполнения к каждому узлу попытки. При вставке слова в попытку одновременно добавьте автозаполнение, установленное для каждого посещенного узла. Чтобы выполнить автозаполнение, просто верните набор автозаполнения для соответствующего узла.

Это решение добавляет одну строку к insertWord и getWordsWithPrefix, в то время как полностью удаляет необходимость buildWords.

+0

Разве это не было бы значительно хуже космической сложности? Это означало бы сохранение одного и того же слова снова и снова. –

+0

Узлы будут содержать только ссылки на строку автозаполнения, без самих строк. И будет такое же количество ссылок на слово, как и его длина. Таким образом, общее использование памяти будет пропорционально общей длине всех слов, т. Е. Асимптотически то же, что и существующее решение. – kgeorgiy

 Смежные вопросы

  • Нет связанных вопросов^_^