Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >[Leetcode][python]Reverse Integer/反转整数

[Leetcode][python]Reverse Integer/反转整数

作者头像
蛮三刀酱
发布于 2019-03-26 09:06:30
发布于 2019-03-26 09:06:30
60900
代码可运行
举报
运行总次数:0
代码可运行

题目大意

反转整数123变为321,-123变为-321

注意:在32位整数范围内,并且001要成为1

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

解题思路

该题最主要的是,判断越界问题

https://leetcode-cn.com/problems/reverse-integer/solution/

要在没有辅助堆栈 / 数组的帮助下 “弹出” 和 “推入” 数字,我们可以使用数学方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//pop operation:
pop = x % 10;
x /= 10;

//push operation:
temp = rev * 10 + pop;
rev = temp;

但是,这种方法很危险,因为当 temp=rev⋅10+poptemp=rev⋅10+pop\text{temp} = \text{rev} \cdot 10 + \text{pop} 时会导致溢出。

幸运的是,事先检查这个语句是否会导致溢出很容易。

因为:2^31 -1= 2147483647 -2^31 = -2147483648

代码

Java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    public int reverse(int x) {
        int rev = 0;
        while (x != 0) {
            int pop = x % 10;
            x /= 10;
            if (rev > Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)) return 0;
            if (rev < Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) return 0;
            rev = rev * 10 + pop;
        }
        return rev;
    }
}

Python

python没有溢出问题,处理这题投机取巧

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        if x < 0:
            result = -int(str(-x)[::-1])  # 字符串倒序输出
        else:
            result = int(str(x)[::-1])
        if result < -2147483648 or result > 2147483647:
            return 0
        return result

总结

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年08月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【leetCode】整数反转
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
zeekling
2022/08/26
2570
LeetCode 进阶之路 - 整数反转
思路就是先将整数取模,然后将整数/10,然后依次将数字从头排布,乘上10加上获取到的模,在此还要判断是否溢出的情况,因为要乘10,如果已经大于最大值的十分之一则为溢出,如果不大于最大值的十分之一,但取到的模大于7,也会导致溢出,最大值为 2147483648 ,负数的情况类似,以此达到反转的目的。
Li_XiaoJin
2022/06/10
1680
【LeetCode题解---007】 Reverse Integer
大家好,国庆节快乐呀!假期第二天,不管是出门游玩,还是宅在家,都希望你们过得开心。但要想不虚度这美好假期生活,也可以选择看书、学习新技能来提升自己,充实自己。假期是超越对手的好机会,大家可以试试看。
周三不加班
2019/09/04
3730
【LeetCode题解---007】 Reverse Integer
小白刷力扣之整数反转与回文数
题目描述: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
周萝卜
2020/05/22
3580
leetcode 7. 整数反转
1、将12345 % 10 得到5,之后将12345 / 10 2、将1234 % 10 得到4,再将1234 / 10 3、将123 % 10 得到3,再将123 / 10 4、将12 % 10 得到2,再将12 / 10 5、将1 % 10 得到1,再将1 / 10
大忽悠爱学习
2021/11/15
2640
LeetCode-7 整数反转
今天我们学习第7题整数反转,这是个简单的数学题。下面我们看看这道题的题目描述。
用户3470542
2019/06/26
3960
LeetCode-7 整数反转
【转载 leetcode算法-整数反转】
我们可以一次构建反转整数的一位数字。在这样做的时候,我们可以预先检查向原整数附加另一位数字是否会导致溢出。
用户5640963
2020/02/24
3380
Leetcode007-整数反转
如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。
潇洒
2023/10/23
1960
画解算法 7-整数反转
https://leetcode-cn.com/problems/reverse-integer/
灵魂画师牧码
2019/06/27
3860
画解算法 7-整数反转
LeetCode - 整数反转
原题地址:https://leetcode-cn.com/problems/reverse-integer/
晓痴
2019/09/24
3320
LeetCode - 整数反转
Leetcode: Reverse Integer
题目: Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321
卡尔曼和玻尔兹曼谁曼
2019/01/22
6620
【打卡贴】(No.007)反转整数
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
PM小王
2019/07/01
3520
leetcode - 整数反转
链接:https://leetcode-cn.com/problems/reverse-integer
江涛学编程
2021/01/28
3690
LeetCode7. 整数反转
//给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 // // 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 //假设环境不允许存储 64 位整数(有符号或无符号)。 // // // // 示例 1: // // //输入:x = 123 //输出:321 // // // 示例 2: // // //输入:x = -123 //输出:-321 // // // 示例 3: // // //输入:x = 120 //输出:21
周杰伦本人
2022/10/25
1400
异名解题:7. 整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2³¹, 2³¹ − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
异名
2020/07/03
2910
整数反转(ReverseInteger)
注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [, ]。请根据这个假设,如果反转后整数溢出那么就返回 0。
爱敲代码的猫
2019/12/18
4730
leecode刷题(12)-- 整数反转
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
希希里之海
2019/02/15
4370
007. 整数反转 | Leetcode题解
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
苏南
2020/12/16
4000
007. 整数反转 | Leetcode题解
LeetCode-7. Reverse Integer | 整数反转
Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return 0.
Zoctopus
2021/02/05
3890
7 整数反转
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
木瓜煲鸡脚
2021/01/18
3370
7 整数反转
相关推荐
【leetCode】整数反转
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验