leetcode-7:整数反转

简介: leetcode-7:整数反转

题目

题目链接

给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

输入:x = 123
输出:321

示例 2:

输入:x = -123
输出:-321

示例 3:

输入:x = 120
输出:21

示例 4:

输入:x = 0
输出:0

解题:

方法一:双指针

自己实现的一个方式,按照题目要求逐个实现

class Solution:
    def reverse(self, x: int) -> int:
        #去掉末尾的0
        if x == 0 :
            return 0
        while x%10 == 0 :
            x = int(x/10)
        #反转整数    
        num = list(str(x))
        left = 0 if num[0]!="-" else 1
        right = len(num)-1
        while left<right:
            num[left],num[right] = num[right],num[left]
            left+=1
            right-=1
        x = int("".join(num))
        #判断结果是否符合范围          
        if x>=-2**31 and x<=2**31-1:
            return x
        else:
            return 0

方法二:弹出和推入数字

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

方法三:对方法二扩展,利用int->str->list进行反转

class Solution:
    def reverse(self, x: int) -> int:
        y,res = abs(x),0
        boundry = (1<<31)-1 if x>0 else 1<<31
        res = int("".join(list(str(y))[::-1]))
        if res>boundry:
            return 0
        return res if x>0 else -res

总结:

实际上python是弱类型语言,在python环境中不会出现超出存储范围报错的情况,就算超过64位整型的范围,python也能通过一定的方式可以对超过存储范围的数据进行运算和存储。

相关文章
|
2月前
|
算法 Java
[Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
[Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
23 0
|
20天前
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
|
7天前
[leetcode~数位动态规划] 2719. 统计整数数目 hard
[leetcode~数位动态规划] 2719. 统计整数数目 hard
|
16天前
|
存储 算法
leetcode1237. 找出给定方程的正整数解
leetcode1237. 找出给定方程的正整数解
8 0
|
2月前
leetcode2376. 统计特殊整数
leetcode2376. 统计特殊整数
15 1
|
2月前
|
Serverless
leetcode2719. 统计整数数目
leetcode2719. 统计整数数目
14 0
力扣2457 美丽整数最小增量
力扣2457 美丽整数最小增量
|
3月前
|
Java
LeetCode-整数转罗马数字=Java
整数转罗马数字=Java题解
12 0
|
4月前
|
机器学习/深度学习 算法 测试技术
【前缀和]LeetCode1862:向下取整数对和
【前缀和]LeetCode1862:向下取整数对和
|
4月前
leetcode-13:罗马数字转整数
leetcode-13:罗马数字转整数
18 0

热门文章

最新文章