1. 程式人生 > >乘風破浪:LeetCode真題_007_Reverse Integer

乘風破浪: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;
    }
}

三、總結

   細節決定成敗,對於一些簡單的問題,我們也不能掉以輕心,只有沉下心來認真地分析,多做題,多思考,多練習才能遊刃有餘。