Menu
CoddyTech

Implement Trie (Prefix Tree)

MoyenTriepython iconjava iconcpp iconc iconjs icon+10

Un trie, ou arbre préfixe, stocke les mots de manière à répondre rapidement aux questions sur leur début. Construis-en un pour des mots en minuscules avec trois opérations : insert w ajoute le mot w, search w indique si w a été inséré lui-même, et startsWith p indique si un mot inséré commence par p. Un mot est considéré comme un préfixe de lui-même.

Tu reçois les opérations dans l’ordre dans ops, et words[i] est le mot ou le préfixe correspondant à ops[i]. Exécute-les sur un même trie initialement vide et renvoie une chaîne par opération : "null" pour une insertion, et "true" ou "false" pour une recherche ou un startsWith.

Fonction

trieOps(ops: string-array, words: string-array) → string-array
opsstring-array
les opérations, dans l’ordre où elles s’exécutent
wordsstring-array
le mot ou le préfixe de chaque opération
Renvoiestring-array
une réponse par opération, sous forme de texte

Contraintes

  • 1 ≤ ops.length ≤ 2000
  • words.length == ops.length
  • Chaque ops[i] est insert, search ou startsWith.
  • 1 ≤ words[i].length ≤ 20
  • words[i] contient uniquement des lettres minuscules anglaises.

Exemples

Entrée
ops = ["insert", "search", "startsWith", "insert", "search"]words = ["card", "car", "car", "car", "car"]
Sortie
["null", "false", "true", "null", "true"]
Explication
Seul card est stocké au départ, donc rechercher car renvoie "false" : il n’a jamais été inséré comme mot. C’est le début de card, donc startsWith car renvoie "true". Une fois que car est inséré, la recherche le trouve.

lock icon+16 tests cachés à la soumission

challenge icon

Pour aller plus loin

Comment ajouteriez-vous une opération countPrefix p qui renvoie combien de mots stockés distincts commencent par p, toujours en temps O(L) ?

Réinitialiser le code
def trieOps(ops, words):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Cas 3

Entrée

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

Attendu

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