本题不难,主要是为了练习用python。
1、首先分离x各个位上的数
2、将分离的各个位的数按照要求重新组成一个新数,即逆序数
3、判断是否超出32位数的范围,然后按照要求进行输出即可
完整代码如下:
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
maxInt = 2147483647 # 32位整数最大值
minInt = -2147483648 #32位整数最小值
reserve = []
flag = 1 # flag为1代表x为正数,flag为-1代表x为负数
if x < 0:
x = -x
flag = -1
while x > 0: # 分离x各个位上的数
reserve.append(x%10)
x = x/10
index,s= 0,0 #index为下标,s为逆转之后的数
while index < len(reserve):
s = s*10+reserve[index]
index = index + 1
if flag == -1: #如果x为负数则将s取负
s = -s
if s>=maxInt or s<=minInt: #判断逆转之后的数是否超出32位整数的范围,超出则返回0
return 0
return s #没有超出,则返回s