Menu
CoddyTech

Implement Trie (Prefix Tree)

ŚrednieDrzewo triepython iconjava iconcpp iconc iconjs icon+10

Trie, czyli drzewo prefiksowe, przechowuje słowa, dzięki czemu szybko można sprawdzać ich początki. Zbuduj je dla słów zapisanych małymi literami i obsługujące trzy operacje: insert w dodaje słowo w, search w informuje, czy samo w zostało dodane, a startsWith p informuje, czy jakieś dodane słowo zaczyna się od p. Słowo jest swoim własnym prefiksem.

Operacje otrzymujesz w kolejności w tablicy ops, a words[i] to słowo lub prefiks dla ops[i]. Wykonaj je na jednym trie, które początkowo jest puste, i zwróć jeden ciąg znaków na każdą operację: "null" dla operacji insert oraz "true" lub "false" dla operacji search albo startsWith.

Funkcja

trieOps(ops: string-array, words: string-array) → string-array
opsstring-array
operacje, w kolejności ich wykonywania
wordsstring-array
wyraz lub prefiks dla każdej operacji
Zwracastring-array
jedna odpowiedź na operację, jako tekst

Ograniczenia

  • 1 ≤ ops.length ≤ 2000
  • words.length == ops.length
  • Każde ops[i] to insert, search lub startsWith.
  • 1 ≤ words[i].length ≤ 20
  • words[i] zawiera wyłącznie małe litery alfabetu angielskiego.

Przykłady

Wejście
ops = ["insert", "search", "startsWith", "insert", "search"]words = ["card", "car", "car", "car", "car"]
Wyjście
["null", "false", "true", "null", "true"]
Wyjaśnienie
Na początku przechowywane jest tylko card, więc wyszukiwanie car zwraca "false": to słowo nigdy nie zostało wstawione. Jest początkiem card, więc startsWith car zwraca "true". Po wstawieniu car wyszukiwanie je znajduje.

lock icon+16 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Jak dodać operację countPrefix p, która zwraca liczbę różnych zapisanych słów zaczynających się od p, nadal w czasie O(L)?

Zresetuj kod
def trieOps(ops, words):
    # Wpisz tutaj kod
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

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