7. Reverse Integer

題目原文

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

Example 1:

Input: 123
Output: 321

Example 2:

Input: -123
Output: -321

Example 3:

Input: 120
Output: 21

Note:

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

解題思路

  1. 每次先計算% ,取得最低位,每次迭代*10變成reverse的最高位。

  2. 記得紀錄是否為負數號。

程式解答

class Solution 
{
public:
    int reverse(int x) 
    {
        bool symbol = false;
        int rev = 0;
        int check = 0;
        int i = 0;
        
        if (x < 0)
        {
            symbol = true;
            x = abs(x);
        }
        
        while (x)
        {
            if (rev > 0xffffffff / 10)
                return 0;
            rev *= 10;
            if (rev < check)
                return 0;
            i = x;
            i %= 10;
            rev += i;
            check = rev;
            x /= 10;
        }
        
        if (symbol)
            rev *= -1;
        return rev;
    }
};

Last updated

Was this helpful?