problem 007

leetcode 7

Question

Reverse Integer

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

Answer

  1. 一般的方法是原始数转化成字符串
  2. 对字符串进行翻转
  3. 将翻转后的字符处再转化成数字

但本题的要点在于是否翻转后溢出

系统界定翻转后是否溢出的标准是32位存储
正数 <2^31-1
负数 >-2^31

但由于python 支持64 位的整数存储所以即使超出上述便捷也不会有问题 所以要专门设定 32位正数的边界值来满足题目的要求

code
class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        if x<0:
            x=-x
            x_str=str(x)
            x_str=list(x_str)
            x_str.reverse()
            negtive_res=-self.to_int(x_str)
            return  negtive_res if negtive_res>=(-2147483648) else 0 #overflow handeller MIN_POSITIVE_INT<(0x01<<31)
        else :
            x_str=str(x)
            x_str=list(x_str)
            x_str.reverse()
            positive_res=self.to_int(x_str)            
            return positive_res if positive_res<(2147483648) else 0 #overflow handeller MAX_POSITIVE_INT<(0x01<<31)

    def to_int(self,list_x):
        x=''
        for p in list_x:
            x+=p
        return int(x)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值