LeeCode每日一题--整数反转

Olga ·
更新时间:2024-09-21
· 546 次阅读

  【前言】坚持日更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: #通过%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-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 result2**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


作者:Mingw_



leecode 反转

需要 登录 后方可回复, 如果你还没有账号请 注册新账号