【leetcode】7.整数反转

文章目录

一.题目

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

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

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

示例 1:

输入:x = 123
输出:321

示例 2:

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

示例 3:

输入:x = 120
输出:21

示例 4:

输入:x = 0
输出:0

提示:

-2^31 <= x <= 2^31 - 1

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二.题解

package sdnu.com.leetcode7;

/**
 * Integer inversion
 *
 * @author Beyong
 * @date 2021/05/20 23:28
 */
public class Solution {
    public static void main(String[] args) {
        System.out.println(reverse(120));
    }

    /**
     *
     * @author Beyong
     * @date 2021/05/20 23:42
     * @param x
     * @return int
     */

    public static int reverse(int x) {
        int result = 0;
        while(x != 0){
            int tempInteger = x % 10;
            if(result > 214748364 || (result == 214748364 && tempInteger > 7)){
                return 0;
            } else if (result < -214748364 || (result == -214748364 && tempInteger < -8)){
                return 0;
            }
            x /= 10;
            result = result * 10 + tempInteger;
        }
        return result;
    }
}

在这里插入图片描述

只要我们的result大于前九位组成的数,无论第十位是什么,我们的result一定会溢出,当我们的result等于前九位组成的数,我们就需要比较第十位是否比7大,如果比7大,那么我们的result就会溢出,反之没有。

在这里插入图片描述

类似的,只要我们的result小于前十位(包括运算符)组成的数,无论第十一位是什么,我们的result一定会溢出,当我们的result等于前十一位组成的数,我们就需要比较第十一位是否比-8小,如果比-8小,那么就溢出,反之没有。

注意体会result = result * 10 + tempInteger;我们的数字不断加在后面,导致前面的数字都进一位。

作者:Beyong    
出处:Beyong博客
github地址:https://github.com/beyong2019


本博客中未标明转载的文章归作者Beyong有,欢迎转载,但未经作者同意必须保留此段声明,且在文章明显位置给出原文连接,否则保留追究法律责任的权利。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值