47 lines
1.2 KiB
Python
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))
|