Leetcode Palindrome Number Soru Çözümü
- berilcankutlu
- 5 Tem 2024
- 2 dakikada okunur

LeetCode programlama, algoritma ve veri yapıları öğrenmek için kullanılan bir çevrimiçi platformdur. LeetCode çeşitli programlama soruları ile kod yazma becerilerinizi geliştirmenize yardımcı olur.
Dokuzuncu Soru olan "Palindrome Number" sorusu ile devam ediyoruz. Palindrome sayı, hem sağdan hem de soldan okunduğunda aynı olan sayılardır. Örneğin 2002 sayısını sağdan okuduğumuzda da soldan okuduğumuzda da aynı sayıyı elde ederiz. Problem diyor ki, bir palindrome sayı girilirse "True" döndürmeli, sayı palindrome değilse de "False" döndürmeli.
LeetCode'da cevap bölümünde aşağıdaki kod parçası verilmektedir.
class Solution:
def isPalindrome(self, x: int) -> bool:
Peki buradaki "self" ve "->bool" ifadeleri ne anlama gelmektedir?
"self", Python'da sınıf metodlarının ilk parametresi olarak kullanılır ve o metodun ait olduğu nesneyi (instance) ifade eder. Bir sınıfın metodunu çağırdığınızda, Python otomatik olarak o nesneyi (instance) metoda ilk argüman olarak geçirir.
Burada "self", "isPalindrome" metodunun hangi "Solution" nesnesine ait olduğunu belirtir. Bu, metoda nesne içindeki diğer verilere ve metodlara erişim sağlar.
"-> bool", Python'da bir tür ipucudur. Bu, "isPalindrome" metodunun bir "bool" döndüreceğini belirtir. Python dinamik olarak tür belirlediği için, tür ipuçları kodun çalışması için gerekli değildir, ancak kodun okunabilirliğini artırır ve statik tür denetleyicileri tarafından kullanılabilir.
Bu problem slicing yani dilimleme ile çözülebilir. Dilimleme işlemi, bir diziden belirli bir kısmı almak için kullanılır.
Tek satırda num == num[::-1] ifadesi ile sayının palindrome olup olmadığını kontrol edebiliriz.
Peki bu ifade ne anlama geliyor?
Dilimleme işlemleri şu şekilde kullanılır; x[start:stop:step].
Start: Dilimlenmeye başlanan index. Burada index belirtilmezse varsayılan olarak dizinin başından başlar.
Stop: Dilimlemenin bitirileceği index. Belirtilmezse varsayılan olarak dizinin sonuna kadar gider.
Step: Her dilimleme adımında ne kadar atlayacağınızı belirtir.
Yani,
num[::-1] ifadesinde start ve stop belirtilmemiş, bu nedenle dilimleme dizinin başından sonuna kadar yapılır. Step değeri -1 olduğundan, dilimleme işlemi diziyi tersine çevirir.
num==num[::-1] ile de "çevrilen sayı başta verilen sayı ile aynı mı?" kontrolü yapılır.
O halde sorunun cevabı şu şekilde olacaktır:
class Solution:
def isPalindrome(self, x: int) -> bool:
if str(x) == str(x)[::-1]:
return True
if str(x) != str(x)[::-1] or x<0:
return False
Comments