LeetCode 第7题 Reverse Integer (easy)——python

 题目来源:

                         https://leetcode.com/problems/reverse-integer/description/

 题目分析:

    本文是给定一个32位的有符号数,让我们将其逆序输出。它给定了这样的几个例子:

 由它给的例子,我们可以注意到在实现程序时要注意符号位是正常输出的,此外倒序过来有可能会0来打头,这个也是不允许的。看到这个题目,我一开始想用reverse()来做,然后一直在考虑怎样可以省略前面的0,直到参考了其它人的程序才直到本人果然是菜鸟!在实现程序时,知道一下几点程序就可以顺利的写出了!

  1.reverse函数的使用范围

     reverse()函数是用于反向列表中的元素,对于其它的对象是不适用的,因此本题最好的方法不是采用reverse()。关于逆序,我们还可以想到切片的方法,可以进行切片的对象是字符串,列表,元组,同样不包含整数,所以本题我们要注意将整数型数据转化成字符串类型的数据(str(),int())

   2.关于逆序后多余0的情况

     由于最后我们在进行逆序操作后,返回值为整型,因此会有将字符型转化为整形的操作,经过编译,可以发现int()函数自动将前面多余的0给删去了,因此不需要考虑如何去除前面的0。

  3.关于32位有符号数的取值范围

      我在写程序的时候,将其范围写成了-2**31~2**32,结果始终通不过编译,经查询才知道其范围应该是-2**32/2~(2**32)/2-1,这是需要万分注意的。

 实验代码:

  注意了以上几点后,所写的代码如下:
  
class Solution:
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        
        if(x<0):
            y=-1*int((str(-x))[::-1])
        else:
            y=int((str(x))[::-1])
        if (y>(2**32/2-1) or y<(-(2**32/2))):
            y=0
        return (y)

   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值