# 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
```

**Example 4:**

```
Input: x = 0
Output: 0
```

**Constraints:**

* `-2^31 <= x <= 2^31 - 1`

## Solution:

[English Version in Youtube](https://youtu.be/9Uoze4Wfesg)

[中文版解答Youtube Link](https://youtu.be/2Wrdfm0FBOs)

[中文版解答Bilibili Link](https://www.bilibili.com/video/BV1Ry4y1E7mA/)

```
class Solution {
public:
    int reverse(int x) {
        // INT_MAX: 2147483647
        // INT_MIN: -2147483648
        int result = 0;
        
        while (x != 0) {
            int mod = x % 10;
            
            if (result > 214748364 || (result == 214748364 && mod > 7)) {
                return 0;
            }
            if (result < -214748364 || (result == -214748364 && mod == -9)) {
                return 0;
            }
            
            result = 10 * result + mod;
            x /= 10;
        }
        
        return result;
    }
};
```
