欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode刷题(0009)---7. 整数反转

程序员文章站 2024-03-09 15:03:07
...

LeetCode—7. 整数反转

01题目描述:

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

示例 1:

输入: 123
输出: 321

示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

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

02题目分析:

LeetCode刷题(0009)---7. 整数反转

这一个题目首先,我们注意的是**有符号数!!**则其数值范围为 [−231, 231 − 1]
所以我们要做正数和负数的处理。方式有一点是一样的,那就是无论整数负数的解决方式是一样的,唯一不一样的就是这一个正负号的问题。
所以我的处理方式,是用abs()把负数全部变成整数去处理,并且标记出负数,最后计算之后,再在对应的负数前面加上符号-负号即可。

03解答:

方法一、

class Solution:
    def reverse(self, x: int) -> int:
        # 方法一
        x_str = str(abs(x))
        list1 = [item for item in x_str]
        sum = 0
        for index,item in enumerate(list1):
            sum += int(item)*(pow(10,index))
        if not -pow(2,31)<=sum<=pow(2,31)-1:
            sum = 0
        # print(sum)
        if x>=0:
            return sum
        else:
            return -sum
        # return sum if x>0 else -sum
        

方法二:

class Solution:
    def reverse(self, x: int) -> int:
        # 方法二
        x_str = str(abs(x))
        list1 = x_str[::-1]
        if not -pow(2,31)<= (int(str(list1)) or -int(str(list1)) ) <=pow(2,31)-1:
            return 0
        if x>=0:
            return int(str(list1))
        else:
            return -int(str(list1))
        # return int(str(list1)) if x>0 else -int(str(list1))

3.1.方法1运行结果:

LeetCode刷题(0009)---7. 整数反转

3.1.方法1耗时分布情况

LeetCode刷题(0009)---7. 整数反转

3.1.方法1内存使用情况

LeetCode刷题(0009)---7. 整数反转

3.2.方法2运行结果:

LeetCode刷题(0009)---7. 整数反转

3.2方法2耗时分布情况

LeetCode刷题(0009)---7. 整数反转

3.2.方法2内存使用情况

LeetCode刷题(0009)---7. 整数反转

04结语:

个人记录,新手入门,多多学习,欢迎大家交流探讨!
个人网站: http://106.54.78.238/
song_of _sea的个人网站 http://106.54.78.238/

相关标签: python3 LeetCode