Leetcode 009 Palindrome Number
Given an integer x, return true if x is palindrome integer.
An integer is a palindrome when it reads the same backward as forward. For example, 121 is palindrome while 123 is not.
Follow up: Could you solve it without converting the integer to a string?
Input: x = 121
Output: true
Input: x = -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Input: x = 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
- Soruda bize integer bir değer veriliyor ve bunun palindrome(düz olarak ve ters olarak aynı) sayı olup olmadığını bulmamız isteniyor.
- Sorunun devamında integer değeri stringe çevirmeden bulmamız isteniyor.
def isPalindrome(self, x: int) -> bool:
if x<0:return False #0 dan küçük değerler palindrome olamaz -121 121- gibi
div = 1
while x>=10 * div:
div *= 10 #bölenimizi buluyoruz 1221 için div 1000 bulunur.
while x:
right = x % 10 #en sağdaki rakamı bulmak için modunu alıyoruz 1221 % 10 = 1
left = x // div #sayıyı dive bölüyoruz en soldaki rakamı buluyoruz 1221 // 1000 = 1
if left != right: return False #sağ ve sol rakamı karşılaştır.
# 1221 sayısının kontrol etmemiz gereken yeni hali 22
x = (x % div) // 10 # Bunun için önce div ile mod alıyoruz 221 sonrada 10 bölüyoruz 22
div = div / 100 #sağ ve soldan 2 basamak azaldığı için 100 bölüp yeni div buluyoruz.
return True