LeeCode每日一题--整数反转

  【前言】坚持日更LeeCode刷题系列

   不积跬步,无以至千里;不积小流,无以成江海。愿与诸君共勉!


  【题目】7.整数反转

   题目描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

  示例:

    示例 1:   
    	输入: 123
    	输出: 321
       
    示例 2:
    	输入: -123
    	输出: -321
    	
    示例 3:
    	输入: 120
    	输出: 21

注意:

  假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

  思路一:通过将整数通过模10取余的方法得到每一个数码,并将其存入列表中,由于第一个数字不能为0,用if语句进行判断,如果为0,则删除该数字,此过程应该定义在while循环体内,要保证第一个数码不能为0。代码如下:

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        if x == 0:   #0为特殊情况,需要单独考虑
            return 0
        else:
            flag = 0 #用于标志该数字的正负
            if x < 0:
                x = -x 
                flag = 1
            list_x = []  #创立一个空列表,存储得到的数码
            while x > 0: #通过%10取余的方法得到数码
                i = x%10
                list_x.append(i)
                x =  x // 10
            while list_x[0] == 0 and len(list_x)>1: 
            #判断第一个数码是否为0,且当只有一个数码,即只有一个数码时,不再进行此过程
                    del list_x[0]  #如果第0个数码为0,则在列表中删除该数码
            num = 0
            for i in range(len(list_x)):  #将所有的数码,还原为整数
                num = num*10+list_x[i]
            if flag == 1:
                num = -num
            if num < -2**31 or num > 2**31-1: #判断是否溢出
                return 0
            return num

  运行结果:
在这里插入图片描述

  思路二:将整数x转化为str类型,并通过lstrip,rstrip的方式,去除掉左端的‘-’和右端的0,再通过列表内的reversed函数对其进行逆序操作。代码如下:

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        x = str(x)  #将x转化为str类型
        flag =0  #判断x的正负
        result = 0 #存储结果
        if x[0] =='-':
            flag=1
        num = []
        num = list(reversed(x.rstrip('0').lstrip('-')))  #对右边去除0,左边去除‘-’的str(x)进行逆序操作
        for i in range(len(num)):
            result = int(num[i])+result*10
        if flag==1:
            result=-result
        if result<-2**31 or result>2**31-1:
            return 0
        else:
            return result

  运行结果:

在这里插入图片描述

  Notice:当我们将列表中的数字还原为整数类型时,对于类似于‘0123’的值,会自动转化成123而不是0123,因此对x的rstrip()操作是不必要的。(大家可以自行试验)

  关于其中一些知识的链接:

  Python strip、lstrip、rstrip函数讲解

  Python reversed & reverse函数


  分享就到这里了,欢迎大家一起交流讨论。

  注明:

  题目来源:力扣(LeetCode)
  链接:https://leetcode-cn.com/problems/reverse-integer

发布了32 篇原创文章 · 获赞 62 · 访问量 1330

猜你喜欢

转载自blog.csdn.net/Mingw_/article/details/104694120