Menu
CoddyTech

Design Add and Search Words Data Structure

Создайте словарь слов с двумя операциями. addWord w сохраняет слово w. search p проверяет, совпадает ли какое-либо сохранённое слово с шаблоном p: длина должна быть одинаковой, и в каждой позиции шаблон содержит ту же букву или точку ., которая обозначает любую одну букву.

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

Функция

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

Ограничения

  • 1 ≤ ops.length ≤ 2500
  • words.length == ops.length
  • Каждый ops[i] — это addWord или search.
  • 1 ≤ words[i].length ≤ 20
  • Слово, которое нужно добавить, содержит только строчные английские буквы.
  • Шаблон для поиска содержит строчные английские буквы и не более 3 точек.

Примеры

Ввод
ops = ["addWord", "addWord", "search", "search", "search", "search"]words = ["rose", "rise", "r.se", "ros", "rose.", "..s."]
Вывод
["null", "null", "true", "false", "false", "true"]
Пояснение
r.se соответствует обоим словам: точка заменяет o в rose и i в rise. Точка никогда не обозначает отсутствующую букву, поэтому ros и rose. не соответствуют. Шаблон ..s. соответствует, поскольку в обоих словах s стоит на третьем месте.
challenge icon

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

Как бы ты расширил search, если бы шаблон мог также содержать *, обозначающую любую последовательность букв, в том числе пустую?

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

Тест #1

Тест #2

Тест #3

Аргументы

ops = ["addWord", "addWord", "search", "search", "search", "search"]
words = ["rose", "rise", "r.se", "ros", "rose.", "..s."]

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

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