013-力扣刷题7--整数反转

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123 输出: 321  示例 2:

输入: -123 输出: -321 示例 3:

输入: 120 输出: 21 注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

 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
28
29
30
31
32
33
34
35
36
37
38
39
class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        # -214783648 - 214783647
        num=0  #这个是最终的返回值

        #对输入的x取一个绝对值,方便取每一位

        a=abs(x)

        while(a!=0):
            #初始123
            #想要得到是321
            #num=0
            #第一步
            #a=12 取出一个3
            #num=3
            #第二步
            #a=1 取出一个2
            #num=32
            #第三步
            #a=0 取出一个1
            #num=321
            #a=0就是while结束的条件

            #====================
            #求余取每一位
            temp = a%10
            num=num*10+temp  #num每一位左移一位加上求余取出的个位  #这里还是数字运算的好处就是不用考虑末位是0的情况
            a=int(a/10) #将a的末位去掉
        if x>0 and num < 2147483647:
            return num
        elif x < 0 and num <= 2147483647 : #负数多一位所以可以取等于号
            return -num
        else: #越界
            return 0