Normal İfade Eşleştirme
'Normal İfade Eşleştirme' sorunu için ayrıntılı kılavuz ve Python uygulaması.
1. Öğren
'Normal İfade Eşleştirme' sorunu, 2D DP bölümündeki önemli bir zorluktur.
Bu uygulama Python'deki orta düzey mantığa odaklanır.
Sunduğumuz çözümlerde teknik doğruluğu ve kod okunabilirliğini ön planda tutuyoruz.
2. Real-World Applications
3. Visual Intuition
Normal İfade Eşleştirme için mantık akışını görselleştirme.
4. Prerequisites
5. Step-by-Step Thinking
1. Understand the problem
Normal İfade Eşleştirmeye ilişkin sorun bildirimini dikkatlice okuyun.
2. Formulate brute force
Basit bir yinelemeli çözüm taslağı oluşturun.
3. Identify inefficiency
Gereksiz hesaplamaları arayın.
4. Optimize search path
Süreci hızlandırmak için karma veya sıralama kullanın.
5. Final Implementation
Üretim standartları kodunu temizleyin.
Sorun Bildirimi
Bir giriş dizesi s ve bir model p verildiğinde, '.' desteğiyle düzenli ifade eşleştirmeyi uygulayın. ve '*' burada:
- '.' Herhangi bir tek karakterle eşleşir.
- '*' Önceki öğenin sıfır veya daha fazlasıyla eşleşir.
Eşleştirme giriş dizesinin tamamını kapsamalıdır (kısmen değil).
isMatch(s: str, p: str) -> bool adlı bir işlev yazın.
- •1 <= len(s) <= 20
- •1 <= len(p) <= 20
- •s contains only lowercase English letters.
- •p contains only lowercase English letters, '.', and '*'.
- •It is guaranteed for each appearance of the character '*', there will be a previous valid character to match.
Örnekler
s = "aa", p = "a"
False
"a" does not match the entire string "aa".
s = "aa", p = "a*"
True
'*' repeats the preceding 'a' once to match "aa".
s = "ab", p = ".*"
True
".*" matches zero or more of any character.
Need a Hint?
Edge Cases to Watch
- Boş giriş yapıları
- Tek eleman girişleri
- Büyük sayısal sınırlar
Çözmeye Hazır mısınız?
Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.
Mülakat Bilgileri ve Çeşitleri
Karmaşıklık Analizi Dökümü
Neden Zaman: Directly evaluates all possibilities.
Neden Uzay: Uses standard local memory.
Neden Zaman: Optimized paths reduce total operations.
Neden Uzay: May trade memory for speed.
Optimize Edilmiş Çözüm Python Kodu
Optimize Edilmiş Çözüm Python Kodu
def is_match_opt(s, p):
cache = {}
def dfs(i, j):
if (i, j) in cache: return cache[(i, j)]
if i >= len(s) and j >= len(p): return True
if j >= len(p): return False
match = i < len(s) and (s[i] == p[j] or p[j] == ".")
if (j + 1) < len(p) and p[j + 1] == "*":
cache[(i, j)] = (dfs(i, j + 2) or (match and dfs(i + 1, j)))
return cache[(i, j)]
if match:
cache[(i, j)] = dfs(i + 1, j + 1); return cache[(i, j)]
cache[(i, j)] = False; return False
return dfs(0, 0)Kaba Kuvvet Kodu (Spoiler Korumalı)
Kaba Kuvvet Kodu (Spoiler Korumalı)
def is_match_brute(s, p):
if not p: return not s
first = bool(s) and p[0] in [s[0], '.']
if len(p) >= 2 and p[1] == '*':
return is_match_brute(s, p[2:]) or (first and is_match_brute(s[1:], p))
else:
return first and is_match_brute(s[1:], p[1:])Algorithm Pattern Checklist
When dealing with 2D DP data patterns.
- Are constraints clear?
- Is there a linear or logarithmic optimization possible?
Key Revision Notes
Standart 2B DP problem özellikleri geçerlidir.
İlgili Sorular
PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!
Önerilen Python Kaynakları
İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.
Python Döngüleri
Veriler üzerinde yineleme yapmak için Python döngülerini nasıl kullanacağınızı öğrenin. Etkileşimli örneklerle for döngüleri, while döngüleri, kesme, devam etme ve döngü en iyi uygulamaları konusunda uzmanlaşın.
Python'da Normal İfadeler
Yerleşik re modülünü kullanarak Python düzenli ifadelerinde ustalaşın. Dize eşleştirmeyi, kalıp aramayı, tüm oluşumları bulmayı ve metin değiştirmeyi öğrenin.
Python String Yöntemleri Hile Sayfası
Python dize manipülasyonu için eksiksiz bir başvuru kılavuzu. Dize özelliklerini biçimlendirme, arama, bölme, değiştirme ve denetleme konusunda uzmanlaşın.
Python vs JavaScript: Hangi Programlama Dili En İyisidir?
Python ve JavaScript arasında kapsamlı bir karşılaştırma. Sözdizimi farklılıklarını, performansı, kullanım örneklerini (arka uç ve ön uç) ve kodlama örneklerini keşfedin.