7. 整数反转

2020-06-22  本文已影响0人  周英杰Anita

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

示例 1:

输入: 123
输出: 321

示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

注意:

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

思路

首先将数字转化为字符串;
将字符串转化为字符列表,如果是负数,那么第一个字符就是‘-’,所以从第二个位置是数字字符串的开始位置,例如:-1240,字符列表为[‘1’,‘2’,‘4’,‘0’]
将字符列表反转,如果反转后,数字前面有0就依次去掉 例如[‘4’,‘2’,‘1’]
将反转后的字符列表用join方法连接成一个字符串,[‘4’,‘2’,‘1’] -》 "421"
判断数字的符号,如果是负数,那么字符串前面添加负号,再转化成整数,判断整数的范围;如果是正数,判断正数的范围,返回结果。

python3解法

class Solution:
    def reverse(self, x: int) -> int:
        xstr = str(x)
        temp = ''
        xlist = [i for i in xstr]
        if xlist[0] == '-':
            temp = xlist.pop(0)
        xlist.reverse()
        while xlist[0] == '0':
            xlist.pop(0)
        xstr = ''.join(xlist)
        if temp == '-':
            return int(temp + xstr) if int(temp + xstr) > -math.pow(2,31) else 0
        else:
            return int(xstr) if int(xstr) < math.pow(2,31) -1 else 0 

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

上一篇 下一篇

猜你喜欢

热点阅读