Menu
CoddyTech

Implement Trie (Prefix Tree)

OrtaTriepython iconjava iconcpp iconc iconjs icon+10

Küçük harfli sözcükler için üç işlemli bir trie (önek ağacı) oluştur: insert w, w sözcüğünü ekler; search w, w sözcüğünün kendisinin eklenip eklenmediğini belirtir ve startsWith p, eklenen herhangi bir sözcüğün p ile başlayıp başlamadığını belirtir. Bir sözcük, kendisinin de öneki sayılır.

i işlemi, words[i] üzerinde ops[i] işlemidir. İşlemleri boş bir trie üzerinde sırayla çalıştır ve her biri için bir dize döndür: ekleme için "null", arama veya startsWith için "true" ya da "false".

Fonksiyon

trieOps(ops: string-array, words: string-array) → string-array
opsstring-array
işlemler, yürütüldükleri sırayla
wordsstring-array
her işlem için sözcük veya önek
Döndürürstring-array
işlem başına metin olarak bir yanıt

Kısıtlar

  • 1 ≤ ops.length ≤ 2000
  • words.length == ops.length
  • Her ops[i], insert, search veya startsWith şeklindedir.
  • 1 ≤ words[i].length ≤ 20
  • words[i] yalnızca küçük İngilizce harfler içerir.

Örnekler

Girdi
ops = ["insert", "search", "startsWith", "insert", "search"]words = ["card", "car", "car", "car", "car"]
Çıktı
["null", "false", "true", "null", "true"]
Açıklama
car, card ile başladığı için startsWith car sonucu "true" olur; ancak car hiç eklenmediği için ilk arama "false" sonucunu verir. insert car işleminden sonra arama onu bulur.
challenge icon

Ek soru

Depolanmış kaç farklı sözcüğün p ile başladığını döndüren bir countPrefix p işlemini yine O(L) zamanda nasıl eklersin?

Kodu sıfırla
def trieOps(ops, words):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argümanlar

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

Beklenen Çıktı

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