Menu
CoddyTech

Implement Trie (Prefix Tree)

SedangTriepython iconjava iconcpp iconc iconjs icon+10

Buat trie (pohon prefiks) untuk kata-kata berhuruf kecil dengan tiga operasi: insert w menambahkan kata w, search w memberi tahu apakah w sendiri telah ditambahkan, dan startsWith p memberi tahu apakah ada kata yang telah ditambahkan dan diawali dengan p. Sebuah kata dianggap sebagai prefiks dari dirinya sendiri.

Operasi i adalah ops[i] pada words[i]. Jalankan operasi-operasi tersebut secara berurutan pada trie kosong dan kembalikan satu string untuk setiap operasi: "null" untuk insert, "true" atau "false" untuk search atau startsWith.

Fungsi

trieOps(ops: string-array, words: string-array) → string-array
opsstring-array
operasi-operasi, sesuai urutan pelaksanaannya
wordsstring-array
kata atau awalan untuk setiap operasi
Mengembalikanstring-array
satu jawaban per operasi, sebagai teks

Batasan

  • 1 ≤ ops.length ≤ 2000
  • words.length == ops.length
  • Setiap ops[i] adalah insert, search, atau startsWith.
  • 1 ≤ words[i].length ≤ 20
  • words[i] hanya berisi huruf kecil dalam bahasa Inggris.

Contoh

Input
ops = ["insert", "search", "startsWith", "insert", "search"]words = ["card", "car", "car", "car", "car"]
Output
["null", "false", "true", "null", "true"]
Penjelasan
car merupakan awalan dari card, jadi startsWith car bernilai "true", tetapi car belum pernah disisipkan, jadi pencarian pertama menghasilkan "false". Setelah insert car, pencarian menemukannya.
challenge icon

Pertanyaan lanjutan

Bagaimana cara menambahkan operasi countPrefix p yang mengembalikan jumlah kata tersimpan yang berbeda dan diawali dengan p, tetap dalam waktu O(L)?

Reset kode
def trieOps(ops, words):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

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