Menu
CoddyTech

Implement Trie (Prefix Tree)

OrtaTriepython iconjava iconcpp iconc iconjs icon+10

Trie veya önek ağacı, sözcükleri başlangıçlarıyla ilgili sorgular hızlı olacak şekilde saklar. Küçük harfli sözcükler için üç işlem içeren bir trie oluştur: insert w sözcük w'yi ekler, search w doğrudan w'nin eklenip eklenmediğini belirtir ve startsWith p eklenmiş herhangi bir sözcüğün p ile başlayıp başlamadığını belirtir. Bir sözcük, kendisinin öneki sayılır.

İşlemleri sıralı olarak ops içinde alırsın ve words[i], ops[i] için sözcük veya önektir. İşlemleri boş başlayan tek bir trie üzerinde uygula ve her işlem için bir metin 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, çalıştırıldıkları 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 değerlerinden biridir.
  • 1 ≤ words[i].length ≤ 20
  • words[i] yalnızca küçük harfli İngilizce harfleri içerir.

Örnekler

Girdi
ops = ["insert", "search", "startsWith", "insert", "search"]words = ["card", "car", "car", "car", "car"]
Çıktı
["null", "false", "true", "null", "true"]
Açıklama
İlk başta yalnızca card saklanır, bu yüzden car için arama yapmak "false" sonucunu verir: car hiçbir zaman bir sözcük olarak eklenmemiştir. card sözcüğünün başlangıcıdır, bu nedenle startsWith car "true" sonucunu verir. car eklendikten sonra arama onu bulur.

lock iconGönderirken +16 gizli test

challenge icon

Ek soru

countPrefix p işlemini, p ile başlayan kaç farklı kayıtlı sözcük olduğunu O(L) zamanda döndürecek şekilde nasıl eklersiniz?

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

Durum 1

Durum 2

Durum 3

Girdi

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

Beklenen

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