Menu
CoddyTech

Design Add and Search Words Data Structure

Zbuduj słownik wyrazów z dwiema operacjami. addWord w zapisuje wyraz w. search p informuje, czy któryś z zapisanych wyrazów pasuje do wzorca p: ma tę samą długość, a na każdej pozycji wzorzec zawiera tę samą literę lub kropkę ., która oznacza dowolną jedną literę.

Operacja i to ops[i] wykonywana na wyrazie lub wzorcu words[i]. Wykonaj operacje po kolei na pustym słowniku i zwróć po jednym ciągu znaków dla każdej: "null" dla addWord, "true" lub "false" dla search.

Funkcja

wordDictionaryOps(ops: string-array, words: string-array) → string-array
opsstring-array
operacje, w kolejności ich wykonywania
wordsstring-array
słowo do dodania lub wzorzec do wyszukania, po jednym na operację
Zwracastring-array
jedna odpowiedź na operację, jako tekst

Ograniczenia

  • 1 ≤ ops.length ≤ 2500
  • words.length == ops.length
  • Każde ops[i] to addWord lub search.
  • 1 ≤ words[i].length ≤ 20
  • Dodawane słowo zawiera wyłącznie małe litery alfabetu angielskiego.
  • Wzorzec do wyszukania zawiera małe litery alfabetu angielskiego i maksymalnie 3 kropki.

Przykłady

Wejście
ops = ["addWord", "addWord", "search", "search", "search", "search"]words = ["rose", "rise", "r.se", "ros", "rose.", "..s."]
Wyjście
["null", "null", "true", "false", "false", "true"]
Wyjaśnienie
r.se pasuje do obu słów: kropka zastępuje literę o w rose i literę i w rise. Kropka nigdy nie oznacza brakującej litery, więc ros i rose. nie pasują. ..s. pasuje, ponieważ w obu słowach trzecią literą jest s.
challenge icon

Pytanie dodatkowe

Jak rozszerzyć search, jeśli wzorzec może zawierać również *, oznaczającą dowolny ciąg liter, także pusty?

Zresetuj kod
def wordDictionaryOps(ops, words):
    # Napisz kod tutaj

Test #1

Test #2

Test #3

Argumenty

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

Oczekiwany wynik

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