Z09

Mesaj Çözme Yolları

Başmühendis (Staff/Lead)
Hedef Süre: 40 - 50 Dakika
Tip: NUMERIC

Teknik Tanım & Görev

Boşlukları silinmiş bir mesaj elimize ulaştı. Mesaj yalnızca küçük harflerden oluşuyor ve elimizde bir KELİME SÖZLÜĞÜ var. Mesajı, sözlükteki kelimeleri YAN YANA getirerek (araya hiçbir karakter eklemeden) kaç FARKLI ŞEKİLDE yeniden kurabiliriz? Kurallar: • Sözlükteki bir kelime BİRDEN FAZLA KEZ kullanılabilir. • Sözlükte TEKRAR EDEN kelimeler olabilir; bunlar AYNI kelime sayılır (aynı ayrıştırma iki kez sayılmaz). • Kelimelerin sırası mesajdaki sıraya uymalıdır. Farklı ayrıştırma sayısını 1.000.000.007 modunda döndür.

Fonksiyon İmzası (Python)

cozme_yolu_sayisi(mesaj: str, sozluk: list[str]) -> int

Girdi ve Çıktı Sözleşmesi

Çıktı Kuralı:[0, 1.000.000.006] aralığında tam sayı. Boş mesaj için 1.

Sistem Kısıtları (Constraints)

0 <= mesaj.length <= 10^5
1 <= sozluk.length <= 10^4
tüm metinler küçük ASCII harf
0 < sözlük[i].length <= 100

Örnek Yürütme Analizi

mesaj = "kalemlik", sozluk = ["kalem","lik","ka","lem"]
1) "kalem" + "lik"
2) "ka" + "lem" + "lik"
cevap: 2

Örnek Test Senaryoları (3)

Örnek 1
Girdi:["kalemlik",["kalem","lik","ka","lem"]]
Beklenen Çıktı:2
Örnek 2: Küçük Mesaj Alternatif Ayrıştırma
Girdi:["kod",["k","o","d","ko"]]
Beklenen Çıktı:2
Örnek 3: Tek Geçerli Yol
Girdi:["test",["te","st"]]
Beklenen Çıktı:1
Python Editörü Yükleniyor...
Girdi Parametreleri
[
  "kalemlik",
  [
    "kalem",
    "lik",
    "ka",
    "lem"
  ]
]
Beklenen Çıktı
2