Menu
CoddyTech

Implement Trie (Prefix Tree)

MedioTriepython iconjava iconcpp iconc iconjs icon+10

Un trie, o albero dei prefissi, memorizza le parole in modo da rispondere rapidamente alle domande sui loro inizi. Costruiscine uno per parole in minuscolo con tre operazioni: insert w aggiunge la parola w, search w indica se w è stata inserita, e startsWith p indica se qualche parola inserita inizia con p. Una parola è considerata prefisso di sé stessa.

Ricevi le operazioni in ordine in ops, e words[i] è la parola o il prefisso per ops[i]. Eseguile su un unico trie inizialmente vuoto e restituisci una stringa per ogni operazione: "null" per un inserimento e "true" o "false" per una ricerca o un'operazione startsWith.

Funzione

trieOps(ops: string-array, words: string-array) → string-array
opsstring-array
le operazioni, nell’ordine in cui vengono eseguite
wordsstring-array
la parola o il prefisso per ogni operazione
Restituiscestring-array
una risposta per operazione, come testo

Vincoli

  • 1 ≤ ops.length ≤ 2000
  • words.length == ops.length
  • Ogni ops[i] è insert, search o startsWith.
  • 1 ≤ words[i].length ≤ 20
  • words[i] contiene solo lettere inglesi minuscole.

Esempi

Input
ops = ["insert", "search", "startsWith", "insert", "search"]words = ["card", "car", "car", "car", "car"]
Output
["null", "false", "true", "null", "true"]
Spiegazione
All'inizio è memorizzato solo card, quindi cercando car si ottiene "false": non è mai stato inserito come parola. È l'inizio di card, quindi startsWith car restituisce "true". Una volta inserito car, la ricerca lo trova.

lock icon+16 test nascosti all’invio

challenge icon

Per approfondire

Come aggiungeresti un'operazione countPrefix p che restituisca quante parole distinte memorizzate iniziano con p, sempre in tempo O(L)?

Ripristina il codice
def trieOps(ops, words):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Caso 3

Input

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

Atteso

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