Menu
CoddyTech

Implement Trie (Prefix Tree)

Постройте бор (префиксное дерево) для слов в нижнем регистре с тремя операциями: insert w добавляет слово w, search w сообщает, было ли добавлено само слово w, а startsWith p сообщает, начинается ли какое-либо добавленное слово с p. Слово считается префиксом самого себя.

Операция i — это ops[i] для слова words[i]. Выполните их по порядку на пустом боре и верните по одной строке для каждой: "null" для операции вставки, "true" или "false" для операции поиска или startsWith.

Функция

trieOps(ops: string-array, words: string-array) → string-array
opsstring-array
операции в порядке их выполнения
wordsstring-array
слово или префикс для каждой операции
Возвращаетstring-array
по одному ответу на операцию, в виде текста

Ограничения

  • 1 ≤ ops.length ≤ 2000
  • words.length == ops.length
  • Каждый ops[i] — это insert, search или startsWith.
  • 1 ≤ words[i].length ≤ 20
  • words[i] содержит только строчные английские буквы.

Примеры

Ввод
ops = ["insert", "search", "startsWith", "insert", "search"]words = ["card", "car", "car", "car", "car"]
Вывод
["null", "false", "true", "null", "true"]
Пояснение
car — начало card, поэтому startsWith car равно "true", но car никогда не добавляли, поэтому первый поиск возвращает "false". После insert car поиск находит его.
challenge icon

Дополнительный вопрос

Как добавить операцию countPrefix p, которая возвращает количество различных сохранённых слов, начинающихся с p, по-прежнему за O(L) времени?

Сбросить код
def trieOps(ops, words):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргументы

ops = ["insert", "search", "startsWith", "insert", "search"]
words = ["card", "car", "car", "car", "car"]

Ожидаемый вывод

["null", "false", "true", "null", "true"]