Polinomsal Dize Hash'leme
Alt dizeleri sabit zamanda karşılaştırın.
Polinomsal Dize Hash'leme, CoddyKit'te ücretsiz bir Coding Interview Prep dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Coding Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Coding Interview Prep kursu toplamda 4 dersten oluşur.
Alt Dizeleri Hızlıca Karşılaştırma
Çoğu zaman iki alt dizenin eşit olup olmadığını sormanız gerekir. Karakter karakter karşılaştırmalar yavaştır; bu nedenle her dizeyi bir sayıya dönüştürürüz. 🔢
Karma Fikri
Bir karma, bir dizeyi tek bir tam sayıya dönüştürür. İki dize farklıysa karmaları da neredeyse her zaman farklı olur.
Dizeleri Polinom Olarak Ele Alın
Her karakteri p tabanındaki bir rakam olarak okuruz. Bu polinom bakışı, dizeyi büyük bir ağırlıklı toplama dönüştürür.
h = ord(s[0]) + ord(s[1]) * p + ord(s[2]) * p * pBir Taban ve Modül Seçin
31 gibi bir asal taban ve büyük bir asal modül seçin. Mod işlemi sayıları küçük tutar ve taşmayı önler.
BASE = 31
MOD = 10**9 + 9Tek Bir Karma Hesaplama
Dizeyi dolaşın ve her karakteri Horner kuralıyla birleştirin; her adımda mod işlemi uygulayın.
h = 0
for c in s:
h = (h * BASE + ord(c)) % MODÖnek Karmaları
Her konum için bir önek karması saklayın. Ardından herhangi bir alt dize karmasını hızlı bir çıkarmayla elde edebilirsiniz.
pre[i + 1] = (pre[i] * BASE + ord(s[i])) % MODTabanın Kuvvetleri
Ayrıca tabanın kuvvetlerini önceden hesaplayın. Çıkarma yaptığınızda iki öneki aynı ölçeğe getirirler.
pw[i] = (pw[i - 1] * BASE) % MODO(1) Sürede Alt Dize Karması
s[l..r] alt dizesinin karması, bir kuvvetle ölçeklendirilmiş iki önek karmasının çıkarılmasıdır. Sorgu başına sabit zaman.
def sub(l, r):
return (pre[r] - pre[l] * pw[r - l]) % MODÇakışmalara dikkat edin
İki farklı dize aynı karma değerini paylaşabilir; buna çakışma denir. Bu durum nadirdir, ancak yarışmalarda bazen girdiler özellikle bunu tetikleyecek şekilde hazırlanır.
Güvenlik için çift karma
İki bağımsız modül kullanıp her iki karma değerini de karşılaştırın. İkisinde birden aynı anda çakışma olması pratikte imkânsızdır.
Karma işleminin öne çıktığı yerler
Karma işlemi alt dize karşılaştırmasını, tekrarları bulmayı ve desen aramayı mümkün kılar. Çok amaçlı, esnek bir araçtır.
Hızlı kontrol
Çok sayıda alt dizeyi güvenli biçimde karşılaştırmak için doğru aracı seçin.
Özet: Karma işleminin gücü
Artık dizeleri polinom karma değerlerine dönüştürebilir, herhangi bir alt dizeyi O(1) sürede sorgulayabilir ve çakışmalara karşı önlem alabilirsiniz. 🚀
Sıkça Sorulan Sorular
“Polinomsal Dize Hash'leme” dersi ücretsiz mi?
Evet — “Polinomsal Dize Hash'leme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Coding Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Coding Interview Prep kursu toplamda 4 dersten oluşur.
“Polinomsal Dize Hash'leme” dersinde ne öğreneceğim?
Alt dizeleri sabit zamanda karşılaştırın. Coding Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Coding Interview Prep öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Coding Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Polinomsal Dize Hash'leme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Coding Interview Prep dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Coding Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- KMP Önek İşlevi
- Polinomsal Dize Hash'leme
- Desen Araması için Z-İşlevi
- Önek Aramaları için Trie'ler