Menu
CoddyTech

Implement Trie (Prefix Tree)

MittelTriepython iconjava iconcpp iconc iconjs icon+10

Ein Trie oder Präfixbaum speichert Wörter so, dass Fragen nach ihren Anfängen schnell beantwortet werden. Erstelle einen 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.

Du erhältst die Operationen der Reihe nach in ops, und words[i] ist das Wort oder Präfix für ops[i]. Führe sie auf einem einzigen, anfangs leeren Trie aus und gib für jede Operation einen String zurück: "null" für ein Einfügen und "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
  • Jeder ops[i]-Wert ist insert, search oder startsWith.
  • 1 ≤ words[i].length ≤ 20
  • words[i] enthält nur englische Kleinbuchstaben.

Beispiele

Eingabe
ops = ["insert", "search", "startsWith", "insert", "search"]words = ["card", "car", "car", "car", "car"]
Ausgabe
["null", "false", "true", "null", "true"]
Erklärung
Zunächst wird nur card gespeichert, daher gibt die Suche nach car "false" zurück: Es wurde nie als Wort eingefügt. Es ist der Anfang von card, daher gibt startsWith car "true" zurück. Sobald car eingefügt wird, findet die Suche es.

lock icon+16 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

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

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

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

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