首页 > 其他 > 详细

LeetCode7. 整数反转

时间:2021-05-05 11:53:17      阅读:25      评论:0      收藏:0      [点我收藏+]

LeetCode7. 整数反转

题目描述

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

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

思路分析

  1. 使用整数除法和取模的思路
  2. 整数每次模10,则得到这个整数的最低位,每次除以10,则去掉这个整数的最低位
  3. 因此可以循环的判断,循环结束的条件为 不为0,
  4. 每次循环将 上一次运算的结果 * 10 再加上拿到的最低位
  5. 题目要求反转后整数不超过32位有符号整数的范围,因此要加以判断

源码及分析

public int reverse(int x) {
        //记录返回值
        int res = 0;
        while (x != 0){
            //判断是否越界
            //@Native public static final int   MIN_VALUE = 0x80000000;
            // 十进制数 -2147483648
            //@Native public static final int   MAX_VALUE = 0x7fffffff;
            //十进制数  2147483647

            //因此可以使用两个字段表示32位有符号整数的范围
            if (res < Integer.MIN_VALUE / 10 || res > Integer.MAX_VALUE / 10){
                return 0;
            }
            //取模拿到最低位
            int digit = x % 10;
            //将每次拿到的最低位反转拼接
            res = res * 10 + digit;
            //除法去掉最低位
            x = x / 10;
        }
        //返回
        return res;
    }

LeetCode7. 整数反转

原文:https://www.cnblogs.com/mx-info/p/14731068.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!