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

47 lines
1.2 KiB
Python

"""
Given a signed 32-bit integer x, return x with its digits reversed. If reversing x
causes the value to go outside the signed 32-bit integer range [-231, 231 - 1],
then return 0.
Assume the environment does not allow you to store 64-bit integers (signed or unsigned).
Example 1:
Input: x = 123
Output: 321
Example 2:
Input: x = -123
Output: -321
Example 3:
Input: x = 120
Output: 21
"""
def reverse(x: int) -> int:
MAX_INT = 2 ** 31 - 1
MIN_INT = -2 ** 31
# Create flag of number negativity
is_negative = True if x < 0 else False
# Split number to list of digits
splitted_number = [int(num) for num in str(abs(x))]
# Reverse list
reversed_list = splitted_number[::-1]
# Create string from reversed list
answer = "".join(str(num) for num in reversed_list)
# Strip first zeroes from number
answer.lstrip("0")
# Convert string number to int number
number_answer = int(answer) * -1 if is_negative else int(answer)
# Check constraints
if number_answer > MAX_INT or number_answer < MIN_INT:
return 0
else:
return number_answer
print(reverse(-901000))
print(reverse(1534236469))
print(reverse(-65090))