Tasarım Kelime Ekleme ve Arama
'Kelime Ekleme ve Arama Tasarımı' sorunu için ayrıntılı kılavuz ve Python uygulaması.
1. Öğren
'Tasarım Ekleme ve Arama Sözcükleri' sorunu, Trie bölümündeki önemli bir zorluktur.
Bu uygulama Python'deki kolay düzey mantığına odaklanır.
Sunduğumuz çözümlerde teknik doğruluğu ve kod okunabilirliğini ön planda tutuyoruz.
2. Real-World Applications
3. Visual Intuition
Tasarım Ekleme ve Arama Kelimeleri için mantık akışının görselleştirilmesi.
4. Prerequisites
5. Step-by-Step Thinking
1. Understand the problem
Tasarım Ekleme ve Arama Sözcükleri ile ilgili problem açıklamasını 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
Yeni kelimeler eklemeyi ve bir dizenin önceden eklenmiş herhangi bir dizeyle eşleşip eşleşmediğini bulmayı destekleyen bir veri yapısı tasarlayın.
WordDictionary sınıfını uygulayın:
- WordDictionary() Nesneyi başlatır.
- addWord(word: str) Veri yapısına word ekler, daha sonra eşleştirilebilir.
- search(word: str) -> bool Veri yapısında word ile eşleşen herhangi bir dize varsa True'yu, aksi takdirde False'ı döndürür. kelime noktalar içerebilir '.' noktaların herhangi bir harfle eşleştirilebileceği yer.
Giriş, işlemlerin ve argümanların bir listesidir. Sonuçların bir listesini döndüren wordDictionary(operations: list, arguments: list) -> list işlevini uygulayın (yapıcı/addWord için Yok, arama için bool).
- •1 <= len(word) <= 25
- •word in addWord consists of lowercase English letters
- •word in search consists of '.' or lowercase English letters
- •At most 10^4 calls will be made to addWord and search
Örnekler
operations = ["WordDictionary", "addWord", "addWord", "addWord", "search", "search", "search", "search"], arguments = [[], ["bad"], ["dad"], ["mad"], ["pad"], ["bad"], [".ad"], ["b.."]]
[None, None, None, None, False, True, True, True]
Initialize. Add "bad", "dad", "mad". search("pad") -> False. search("bad") -> True. search(".ad") -> True. search("b..") -> True.
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
class TrieNode:
def __init__(self):
self.children = {}
self.end = False
class WordDictionaryOpt:
def __init__(self):
self.root = TrieNode()
def addWord(self, word):
curr = self.root
for c in word:
if c not in curr.children: curr.children[c] = TrieNode()
curr = curr.children[c]
curr.end = True
def search(self, word):
def dfs(j, root):
curr = root
for i in range(j, len(word)):
c = word[i]
if c == ".":
for child in curr.children.values():
if dfs(i + 1, child): return True
return False
else:
if c not in curr.children: return False
curr = curr.children[c]
return curr.end
return dfs(0, self.root)Kaba Kuvvet Kodu (Spoiler Korumalı)
Kaba Kuvvet Kodu (Spoiler Korumalı)
class WordDictionaryBrute:
def __init__(self):
self.words = set()
def addWord(self, word):
self.words.add(word)
def search(self, word):
if '.' not in word: return word in self.words
for w in self.words:
if len(w) == len(word):
match = True
for i in range(len(word)):
if word[i] != '.' and word[i] != w[i]:
match = False; break
if match: return True
return FalseAlgorithm Pattern Checklist
When dealing with Trie data patterns.
- Are constraints clear?
- Is there a linear or logarithmic optimization possible?
Key Revision Notes
Standart Trie 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 Deneme/Hariç ve Hata İşleme
Python komut dosyalarınızın çökmesini önleyin. Try, hariç, nihayet blokları ve özel istisnaların nasıl düzgün şekilde oluşturulacağını öğrenin.
Python'da Rastgele Sayılar Nasıl Oluşturulur
Python'da rastgele sayıların nasıl oluşturulacağını öğrenin. Randrange, randint ve tek tip şamandıra oluşturmayı tohumlama kontrolüyle karşılaştırın.
Python pip Paket Yöneticisi Hile Sayfası
Pip için komut satırı başvuru kılavuzu. Python paketlerini ve bağımlılıklarını kurmayı, yükseltmeyi, kaldırmayı ve yönetmeyi öğrenin.
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.