乘風破浪:LeetCode真題_007_Reverse Integer
阿新 • • 發佈:2019-01-02
乘風破浪: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; } }
三、總結
細節決定成敗,對於一些簡單的問題,我們也不能掉以輕心,只有沉下心來認真地分析,多做題,多思考,多練習才能遊刃有餘。