Programming

Leetcode-7. Reverse Integer

Leetcode-7. Reverse Integer

Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return 0.

Assume the environment does not allow you to store 64-bit integers (signed or unsigned).

Example 1:

Input: x = 123
Output: 321

Example 2:

Input: x = -123
Output: -321

Example 3:

Input: x = 120
Output: 21

<解題>

  1. 創建一個變數 result 用來保存反轉後的結果,初始化為 0
  2. 當x不為0進入迴圈,先取得原先的最後一個數字,把result * 10 + tail,如果發生溢位,也就是(newResult - tail) / 10 != result,表示發生了溢出,返回 0
  3. 每次把result = newResult; 然後將 x 右移一位(除以 10),進入下一輪迴圈處理

class Solution {
    public int reverse(int x){
    int result = 0;

    while (x != 0){
        int tail = x % 10; //取得原先的最後一個數字
        int newResult = result * 10 + tail;
        if ((newResult - tail) / 10 != result){  //如果發生溢位,直接return 0
            return 0; 
        }
        result = newResult;
        x = x / 10;
    }
    return result;
}
}

Time: O(log|x|) Space: O(1)