leetcode-question7

題目描述

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

Note:

The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

思路:

輸入的數記爲num。
第一次將num對10取餘得到num個位上的數,然後用一個數tem記錄num除以10的結果,然後用tem對10取餘得到num十位數的數字,以此類推,可以得到每一個位上的數字,然後將倒轉即可。
僞代碼:
while(num ! = 1){
ret = ret *10 + num%10
num /= 10;
}
需要注意的是將一個32位數字倒轉時,如果數字很大,容易溢出,溢出的時候返回0。

代碼

/**
 * 將一個32位整數翻轉
 * @author user
 * 注意:檢查ret後是否溢出
 */

public class Solution {
    public int reverse(int x) {
        boolean flag = false;
        long ret = 0;
        if(x < 0){
            x = -x;
            flag = true;
        }
        while(x > 0){
            ret = ret*10 + x % 10;
            x /= 10;
        }
        if(ret > Integer.MAX_VALUE || ret < Integer.MIN_VALUE) 
            return  0;
        if(flag){
            ret = -ret;
        }
        return (int)ret;
    }
}
發佈了72 篇原創文章 · 獲贊 20 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章