leetcode_practice/reversed_integer/other_solutions.py
2024-11-02 14:12:10 +03:00

48 lines
1 KiB
Python

import math
# Top Solution
class Solution:
def reverse(self, x: int) -> int:
MAX_INT = 2**31 - 1 # 2,147,483,647
MIN_INT = -(2**31) # -2,147,483,648
reverse = 0
while x != 0:
if reverse > MAX_INT / 10 or reverse < MIN_INT / 10:
return 0
digit = x % 10 if x > 0 else x % -10
reverse = reverse * 10 + digit
x = math.trunc(x / 10)
return reverse
# Some other Solution
class SolutionTwo:
def reverse(self, x: int) -> int:
flag = -1 if x < 0 else 1
s = str(abs(x))
x = int(s[::-1])
return x * flag if x < 2**31 else 0
class SolutionThree:
def reverse(self, x: int) -> int:
max_int = pow(2, 31) - 1
min_int = pow(-2, 31)
flag = -1 if x < 0 else 1
ans = 0
x = abs(x)
while x > 0:
digit = x % 10
if ans > max_int / 10:
return 0
ans = (ans * 10) + digit
x //= 10
return ans * flag