浩哥的力扣刷题记录——7. 整数反转

2022-05-19  本文已影响0人  Jack魏

1. 题目

官网地址:7. 整数反转 - 力扣(LeetCode) (leetcode-cn.com)

题目截图

2. 讲解

题目的意思就是倒着取原始数字,并且排除大于或小于32位整数的情况。
然后将结果输出即可。
比如我输入123456,那你输出654321,
如果是-19962020,那输出-2026991

3. 思路

这么一看挺简单的,因为人的思维可以直接通过倒着看就能直接得到结果。
那么机器怎么实现呢?
这就是将人脑的运算过程以一种可重复的实现方式来记录。
根据题目的要求我们可以清楚知道,这就是不断取一个数的最后一位,经过进位后存储,然后再去除最后一位数,进入循环,直到取不到数字为止。
可以参考如下运算过程:


运算过程

4. 参考代码

public class L0007 {
    public static void main(String[] args) {
        int[] nums = {123, -123, 123456000,123456789, 888999000,-78912300, -1239870089};
        for (int num :nums) {
            System.out.println(new L0007().reverse(num));
        }
    }

    /**
     * 思路:倒着取每一位数字,然后一直*10进行扩大存储。然后原数字依次去除最后一位。
     * @param num 原始数字
     * @return 反转后数字
     */
    public int reverse(int num) {
        // 结果存放,必须要大于int,因为反转有溢出问题。
        long result = 0;
        while (num != 0){
            // *10相当于扩大一位   %10相当于取最后一位数字
            result = result*10 + num%10;
            // 相当于去掉数字的最后一位,比如原数123,执行之后变成12
            num /= 10;
        }

        // 看看是不是超过int最大最小值了
        if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) {
            return 0;
        }

        return (int)result;
    }
}
运行截图
上一篇 下一篇

猜你喜欢

热点阅读