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