乘风破浪:LeetCode真题_007_Reverse Integer

乘风破浪:LeetCode真题_007_Reverse Integer

一、前言

    这是一个比较简单的问题了,将整数翻转,主要考察了取整和取余,以及灵活地使用long型变量防止越界的问题。

二、Reverse Integer

2.1 问题理解

2.2 问题分析与解决

    可以看到通过简单地取整和取余运算就能得到答案,但是需要注意越界问题,使用long在Java中8个字节的特性来完成越界检查和处理。

   我们的算法:

public class Solution {
    /**
     * <pre>
     * 原题
     * Reverse digits of an integer.
     * Example1: x = 123, return 321
     * Example2: x = -123, return -321
     *
     * 题目大意
     * 输入一个整数对其进行翻转
     *
     * 解题思路
     * 通过求余数求商法进行操作。
     */
    public int reverse(int x) {
        long tmp = x;
        // 防止结果溢出
        long result = 0;

        while (tmp != 0) {
            result = result * 10 + tmp % 10;
            tmp = tmp / 10;
        }

        // 溢出判断
        if (result < Integer.MIN_VALUE || result > Integer.MAX_VALUE) {
            result = 0;
        }

        return (int) result;
    }
}

三、总结

   细节决定成败,对于一些简单的问题,我们也不能掉以轻心,只有沉下心来认真地分析,多做题,多思考,多练习才能游刃有余。

原文地址:https://www.cnblogs.com/zyrblog/p/10209617.html