Reverse Integer--LeetCode

Reverse Integer

(原題鏈接:點擊打開鏈接

Reverse digits of an integer.

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

click to show spoilers.

Have you thought about this?

Here are some good questions to ask before coding. Bonus points for you if you have already thought through this!

If the integer's last digit is 0, what should the output be? ie, cases such as 10, 100.

Did you notice that the reversed integer might overflow? Assume the input is a 32-bit integer, then the reverse of 1000000003 overflows. How should you handle such cases?

For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

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

Solution:

把一個整數反過來顯示,最簡單的想法就是不斷地取到這個整數的最後一位,然後結果左移一位,該整數向右移一位,直到該整數變爲0。
由於這個數爲32位有符號整數,所以要判斷溢出
class Solution {
public:
    int reverse(int x) {
        long long int result = 0;
        int fuhao = x < 0 ? 1 : 0;
        x = x < 0 ? -x : x;
        while(x)
        {
            result = result * 10 + x % 10;
            x = x / 10;
            //cout<<result<<endl;
        }
        if (fuhao) result = -result;
        if (result < INT32_MIN || result > INT32_MAX) return 0;
        return result;
    }
};
我們注意到,其實對於符號的判斷是不必要的。因爲取餘的結果和被除數是一樣的,所以我們可以對算法進行些微的改進。可是時間複雜度依然爲O(N),N爲x的長度
class Solution {
public:
    int reverse(int x) {
        long long int result = 0;
        while(x)
        {
            result = result * 10 + x % 10;
            x = x / 10;
        }
        if (result < INT32_MIN || result > INT32_MAX) return 0;
        return result;
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章