1. 程式人生 > >LeetCode 演算法學習(4)

LeetCode 演算法學習(4)

題目描述

Reverse Integer
Given a 32-bit signed integer, reverse digits of an integer.

Example 1:
Input: 123
Output: 321

Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

題目大意

給出一個32位帶符號的整數,將其數字反轉;當出現溢位時返回0。

思路分析

這是一道比較簡單的題目,關鍵在於對溢位的判斷;32位帶符號整數的取值範圍是:[-231,231-1],即:[-2147483648,2147483647],這樣就可以根據最後一位來判斷是否溢位了。

關鍵程式碼

    int reverse(int x) {
        int rev = 0;
        while (x != 0) {
            int pop = x%10;
            if (rev > INT_MAX/10 || (rev ==
INT_MAX/10 && pop > 7)) return 0; if (rev < INT_MIN/10 || (rev == INT_MIN/10 && pop < -8)) return 0; rev = 10*rev + pop; x /= 10; } return rev; }

總結

主要是要考慮溢位的判斷和取值範圍,實現起來並不難。