0Pricing
Competitive Programming Academy · Ders

Tekrarsız En Uzun Alt Dize

Son görülen konumları bir pencerede izleyin.

Tekrarsız En Uzun Alt Dize, CoddyKit'te ücretsiz bir Competitive Programming Academy dersidir. Bu, 4 dersinin 3. 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, Competitive Programming Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Competitive Programming Academy kursu toplamda 4 dersten oluşur.

Klasik Bir Pencere Problemi

Tekrarlanan karakter içermeyen en uzun alt dizeyi bulun. Bu, neredeyse her değerlendiricide karşınıza çıkan, kaydırmalı pencerenin sevilen bir örneğidir. 🔤

Kaba Kuvvet Tuzağı

Her alt dizede tekrarları kontrol etmek yaklaşık O(n^2) veya daha fazla maliyet getirir. Uzun dizeler için bu fazlasıyla yavaştır; bu nedenle daha akıllı bir tarama gerekir.

Benzersiz Karakterlerden Oluşan Pencere

Her zaman benzersiz karakterleri barındıran bir pencere tutun. Sağı genişletin; bir tekrar ortaya çıktığında, tekrar ortadan kalkana kadar solu küçültün.

Son Konumları Hatırlayın

Her karakterin son indeksini bir sözlükte saklayın. Böylece tarama sırasında bir tekrarın en son nerede görüldüğünü anında öğrenebilirsiniz.

last = {}
left = 0
best = 0

Her Karakteri Tarayın

Dizge üzerinde sağ ile döngü kurarak her adımda hem indeksi hem de o konumdaki karakteri okuyun. Bu, pencereyi her seferinde bir konum ileri taşır.

for right, ch in enumerate(s):

Sol İşaretçiyi Atlatarak İlerletin

Karakter geçerli pencerenin içinde görülmüşse solu, karakterin son konumunun hemen sonrasına taşıyın. Böylece tekrarı tek hamlede kaldırırsınız.

    if ch in last and last[ch] >= left:
        left = last[ch] + 1

Güncelleyin ve Ölçün

Bu karakterin yeni konumunu kaydedin; ardından soldan sağa uzanan pencere tekrarsız olur. Uzunluğu sağ eksi sol artı birdir.

    last[ch] = right
    best = max(best, right - left + 1)

Koruyucu Kontrol Neden Önemlidir

last[ch] >= left kontrolü gereklidir. Bu kontrol olmadan, pencerenin dışındaki eski bir konum solu yanlışlıkla geriye çeker.

Doğrusal Zaman, Doğrusal Alan

Her karakter bir kez ziyaret edilir ve sol yalnızca ileri hareket eder; bu nedenle tarama O(n) sürer. Sözlük, benzersiz karakterler için alan kullanır.

Kenar Durumlarını Kapsayın

Boş bir dizge için cevap sıfır, tek bir tekrarlanan harften oluşan dizge için cevap birdir. Göndermeden önce her ikisini de doğrulayarak sinsi bir WA'dan kaçının.

Yeniden Kullanılabilir Kalıp

Son görülen konumlar eşlemesi ile sıçrayarak ilerleyen sol işaretçi, en fazla bir tekrar içeren pencereler gibi birçok benzersizlik problemine uyarlanabilir.

Hızlı Kontrol

En uzun benzersiz alt dizeyi ararken her karakterin son indeksini tarama boyunca takip ediyorsunuz.

Özet

Benzersiz karakterlerden oluşan bir pencereyi kaydırın, her karakterin son konumunu saklayın ve tekrarların ötesine geçecek şekilde solu ilerletin. Bu klasik problem O(n) sürede çözülür. ✅

Sıkça Sorulan Sorular

“Tekrarsız En Uzun Alt Dize” dersi ücretsiz mi?

Evet — “Tekrarsız En Uzun Alt Dize” 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 Competitive Programming Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Competitive Programming Academy kursu toplamda 4 dersten oluşur.

“Tekrarsız En Uzun Alt Dize” dersinde ne öğreneceğim?

Son görülen konumları bir pencerede izleyin. Competitive Programming Academy 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.

Competitive Programming Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Competitive Programming Academy, 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 3. dersidir.

“Tekrarsız En Uzun Alt Dize” 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 Competitive Programming Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Competitive Programming Academy 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

  1. Sabit Boyutlu Pencere Toplamları
  2. İki İşaretçiyle Değişken Pencere
  3. Tekrarsız En Uzun Alt Dize
  4. Bir Kuralı Karşılayan Pencereleri Sayma
← Competitive Programming Academy Sayfasına Dön