leetcode--整数反转--python

题目

题目详情

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

示例

输入: 123
输出: 321
输入: -123
输出: -321
输入: 120
输出: 21

注意

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

解题代码

小知识

python字符串的切片操作:

>>list1 = '12345'
>>list1[::-1]
>>'54321'
>>list1 = '-12345'
>>list1[1:]
>>'12345'

代码

class Solution:
	def reverse(self,x):
		if x == 0:  #等于0的情况
			return 0
		if x > 0:   #大于0的情况
			x = str(x)
			x = x[::-1]
		else:       #小于0的情况
			x = str(x)
			x = x[1:]    #为了删除负号
			x = x[::-1] 
			x = '-' + x
		x = int(x)
		if -2**31 < x < 2**31-1:    #为了不超出32位整数
			return x
		else:
			return 0

运行结果

在这里插入图片描述

体会

总的执行结果不是很好,我的运行时长是88ms,而最快的是40ms,下面我将贴下代码

class Solution:
    def reverse(self, x: int) -> int:
        rev = 0
        while x != 0:
            pop = x % 10 - 10 if x < 0 and x % 10 != 0 else x % 10
            x = int(x / 10)
            if rev > (2 ** 31 - 1) / 10:
                return 0
            if rev < - (2 ** 31) / 10:
                return 0
            rev = rev * 10 + pop
        return rev

猜你喜欢

转载自blog.csdn.net/qq_39722988/article/details/89212774