美文网首页
7. 整数反转

7. 整数反转

作者: 周英杰Anita | 来源:发表于2020-06-22 21:06 被阅读0次

    给出一个 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
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    相关文章

      网友评论

          本文标题:7. 整数反转

          本文链接:https://www.haomeiwen.com/subject/poiffktx.html