• 【LeetCode】#7 Reverse Integer


    【Question】

    • Reverse digits of an integer.

    • Example:

    x = 123, return 321
    x = -123, return -321


    【My Solution】


    class Solution(object):
        def reverse(self, x):
            """
            :type x: int
            :rtype: int
            """
            neg = 1
            if x < 0:
                neg = -1
            if x == 0:
                return 0
            x = abs(x)
            r = 0
            while x > 0:
                r *= 10
                r += x % 10
                x = x // 10
            ans = r * neg
            if ans > (1<<31)-1 or ans < -(1<<31):
                return 0
            return ans
    
    • 分析
      这题看似简单,其实挖坑很多。需要考虑到以下几点:
    1. 末尾是0的整数翻转后要舍弃0,如10→1,120→21。因此我使用最常规的“对10取余,对10地板除”的方式来翻转整数,此处不宜采用强制类型转换的方式。
    2. 考虑正负两种情况。设一个符号的flag进行调整。
    3. Overflow的问题,不管是翻转前还是翻转后。如果是翻转前就溢出,就要考虑整型值的范围问题,由于python是动态语言,处理变量类型比较灵活,整型值为64位的范围,远远大于题设的32位。再考虑翻转后溢出的情况,利用移位运算求出范围,翻转之后再进行判断。
  • 相关阅读:
    combiner中使用状态模式
    了解Shell
    优秀工具推荐
    linux安装weblogic10.3
    FastDFS上传下载(上)
    java压缩工具类
    06链表
    05数组
    04时间复杂度
    03复杂度
  • 原文地址:https://www.cnblogs.com/surfzjy/p/6213379.html
Copyright © 2020-2023  润新知