Description

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 [-2^31, 2^31 - 1], then return 0.

Example 1:

1
2
Input: x = 123
Output: 321

Example 2:

1
2
Input: x = -123
Output: -321

Example 3:

1
2
Input: x = 120
Output: 21

Example 4:

1
2
Input: x = 0
Output: 0

Constraints:

  • -2^31 <= x <= 2^31 - 1

Approach

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution:
def reverse(self, x: int) -> int:
sign = -1 if x < 0 else 1
x = abs(x)

reversed_x = 0
while x > 0:
reversed_x = reversed_x * 10 + x % 10
x //= 10

reversed_x *= sign

if reversed_x < -2**31 or reversed_x > 2**31 - 1:
return 0

return reversed_x