[LeetCode] Challenge log 7

7. Reverse Integer

Normal question, but be aware of the upper bound and lower bound.


Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

1
2
Input: 123
Output: 321

Example 2:

1
2
Input: -123
Output: -321

Example 3:

1
2
Input: 120
Output: 21

Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.


Soulution:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution:
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
def maxint():
m = 1
for i in range(31):
m = m << 1
return -m, m-1

s = str(x)
if s[0] == '-':
sign = -1
s = s[1:]
else:
sign = +1

lb, ub = maxint()
# print(lb, ub)
x = int(s[::-1])
x = sign * x
if x < lb or x> ub:
x = 0

return x
0%