zoukankan      html  css  js  c++  java
  • 整数取反

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
    注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
    示例 1:
    输入: 123
    输出: 321
    示例 2:
    输入: -123
    输出: -321
    示例 3:
    输入: 120
    输出: 21

    执行用时 :48 ms, 在所有 Python3 提交中击败了85.67% 的用户
    内存消耗 :14 MB, 在所有 Python3 提交中击败了5.21%的用户

    class Solution:
        def reverse(self, x: int) -> int:
            a=0
            if x>=0:
                while x>0:
                    a=a*10+x%10
                    x//=10
            else:
                x=-x
                while x>0:
                    a=a*10+x%10
                    x//=10
                a=-a
            if a<-2**31 or a>2**31-1:
                return 0
            else:
                return a
    

    采用余数乘10累加的方法

    while x>0:
                        a=a*10+x%10
                        x//=10
    

    因为在python3中取整是‘向下取整’,所以要分两种情况x<0,x>=0.
    x<0时,将x=-x,和x>0时一样,进行余数乘10累加,再将反转后的a=-a

    >>> 33//10
    3
    >>> -33//10
    -4
    

    最后就是溢出判断:

     if a<-2**31 or a>2**31-1:
                    return 0
                else:
                    return a
    

    也可以采用pow()内置函数

     if a<-pow(2,31) or a>pow(2,31)-1:
                return 0
            else:
                return a
    

    算法题来自:https://leetcode-cn.com/problems/reverse-integer/

  • 相关阅读:
    18软工实践-第三次作业-结对项目1
    结对作业之代码规范
    ALPHA(7)
    ALPHA(6)
    ALPHA(五)
    404 Note Found 现场编程
    ALPHA(四)
    ALPHA冲刺(三)
    ALpha冲刺(二)
    ALPHA 冲刺(一)
  • 原文地址:https://www.cnblogs.com/llb123/p/13398749.html
Copyright © 2011-2022 走看看