Menu
CoddyTech

Implement Trie (Prefix Tree)

MedioTriepython iconjava iconcpp iconc iconjs icon+10

Un trie, o árbol de prefijos, almacena palabras para que las consultas sobre sus comienzos sean rápidas. Construye uno para palabras en minúsculas con tres operaciones: insert w agrega la palabra w, search w indica si se insertó la propia palabra w y startsWith p indica si alguna palabra insertada comienza con p. Una palabra cuenta como prefijo de sí misma.

Recibes las operaciones en orden como ops, y words[i] es la palabra o el prefijo correspondiente a ops[i]. Ejecútalas en un mismo trie que comienza vacío y devuelve una cadena por operación: "null" para una inserción y "true" o "false" para una búsqueda o una operación startsWith.

Función

trieOps(ops: string-array, words: string-array) → string-array
opsstring-array
las operaciones, en el orden en que se ejecutan
wordsstring-array
la palabra o el prefijo de cada operación
Devuelvestring-array
una respuesta por operación, como texto

Restricciones

  • 1 ≤ ops.length ≤ 2000
  • words.length == ops.length
  • Cada ops[i] es insert, search o startsWith.
  • 1 ≤ words[i].length ≤ 20
  • words[i] contiene únicamente letras minúsculas del inglés.

Ejemplos

Entrada
ops = ["insert", "search", "startsWith", "insert", "search"]words = ["card", "car", "car", "car", "car"]
Salida
["null", "false", "true", "null", "true"]
Explicación
Al principio solo se almacena card, por lo que buscar car devuelve "false": nunca se insertó como palabra. Es el comienzo de card, así que startsWith car devuelve "true". Una vez insertado car, la búsqueda lo encuentra.

lock icon+16 pruebas ocultas al enviar

challenge icon

Para ir más allá

¿Cómo agregarías una operación countPrefix p que devuelva cuántas palabras distintas almacenadas empiezan con p, manteniendo un tiempo de ejecución de O(L)?

Restablecer código
def trieOps(ops, words):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

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