Menu
CoddyTech

Implement Trie (Prefix Tree)

MittelTriepython iconjava iconcpp iconc iconjs icon+10

Erstelle einen Trie (Präfixbaum) für Wörter in Kleinbuchstaben mit drei Operationen: insert w fügt das Wort w hinzu, search w gibt an, ob w selbst eingefügt wurde, und startsWith p gibt an, ob ein eingefügtes Wort mit p beginnt. Ein Wort gilt als Präfix seiner selbst.

Die Operation i ist ops[i] für words[i]. Führe sie der Reihe nach in einem leeren Trie aus und gib jeweils einen String zurück: "null" für ein Einfügen, "true" oder "false" für eine Suche oder ein startsWith.

Funktion

trieOps(ops: string-array, words: string-array) → string-array
opsstring-array
die Operationen in der Reihenfolge, in der sie ausgeführt werden
wordsstring-array
das Wort oder Präfix für jede Operation
Gibt zurückstring-array
eine Antwort pro Operation, als Text

Einschränkungen

  • 1 ≤ ops.length ≤ 2000
  • words.length == ops.length
  • Jedes ops[i] ist insert, search oder startsWith.
  • 1 ≤ words[i].length ≤ 20
  • words[i] enthält ausschließlich kleingeschriebene englische Buchstaben.

Beispiele

Eingabe
ops = ["insert", "search", "startsWith", "insert", "search"]words = ["card", "car", "car", "car", "car"]
Ausgabe
["null", "false", "true", "null", "true"]
Erklärung
car beginnt card, also ist startsWith car "true", aber car wurde nie eingefügt, daher ist die erste Suche "false". Nach insert car findet die Suche es.
challenge icon

Weiterführende Frage

Wie würdest du eine countPrefix p-Operation hinzufügen, die zurückgibt, wie viele verschiedene gespeicherte Wörter mit p beginnen, und das weiterhin in O(L)-Zeit?

Code zurücksetzen
def trieOps(ops, words):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argumente

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

Erwartete Ausgabe

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