Python'da Palindrome Kontrolü — 3 Farklı Yaklaşım
String slicing, iki pointer ve regex yaklaşımlarıyla palindrome kontrolü. Python mülakatlarının en sık sorulan sorusudur.
Python'da Palindrome Kontrolü
Palindrome, tersten okunduğunda aynı olan kelime/cümledir. "radar", "level" veya "A man a plan a canal Panama" gibi.
Problem Tanımı
Bir string'in palindrome olup olmadığını kontrol et. Büyük/küçük harf, boşluk ve noktalama fark etmemeli.
Yaklaşım 1: String Slicing
En kısa ve en Pythonic yol.
import re
def is_palindrome(text):
cleaned = re.sub(r'[^a-z0-9]', '', text.lower())
return cleaned == cleaned[::-1]
Avantajlar:
Dezavantaj: O(n) ek bellek (yeni string oluşturur)
Yaklaşım 2: İki Pointer
O(1) ek bellek ile çalışır.
def is_palindrome(text):
cleaned = re.sub(r'[^a-z0-9]', '', text.lower())
left, right = 0, len(cleaned) - 1
while left < right:
if cleaned[left] != cleaned[right]:
return False
left += 1
right -= 1
return True
Avantaj: Bellek dostu, büyük string'lerde avantajlı.
Yaklaşım 3: Recursive
Öğretici ama pratikte yavaş.
def is_palindrome(s):
if len(s) <= 1:
return True
if s[0] != s[-1]:
return False
return is_palindrome(s[1:-1])
Edge Case'ler
unicodedata.normalize kullanPerformans Karşılaştırması
| Yaklaşım | Zaman | Bellek |
|---------|-------|--------|
| Slicing | O(n) | O(n) |
| İki pointer | O(n) | O(1) |
| Recursive | O(n) | O(n) (stack) |
Sonuç
Mülakatlarda iki pointer yaklaşımını gösterin — hem teknik hem bellek açısından en iyisi.
Sık Sorulan Sorular
S:Türkçe karakterlerle palindrome nasıl kontrol edilir?
S:Hangi yaklaşım production'da tercih edilir?
İlgili Mülakat Soruları
Bu rehberi okuduktan sonra şu soruları çözerek pratiğinizi pekiştirin:
Pratik yapmaya hazır mısın?
Tüm Python mülakat sorularını tarayıcıda çalıştır, test caseleri geç, kodunu paylaş.
Sorulara Göz At→