# LeetCode: Reverse Integer

By | 2016 年 5 月 7 日

# Previous Post

This is the previous post on same question.

# Question

LeetCode Link
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321

# Analyze

Careful about the overflow. For ruby, it’s not a problem. For c++, need more consideration.

# Code

## Ruby Code

```# @param {Integer} x
# @return {Integer}
def reverse(x)
sign = x >= 0 ? 1 : -1
x = x.abs
y = 0
int_max = 2 ** 31 - 1
while x > 0 do
digit = x % 10
y = y * 10 + digit
if y > int_max
y = 0
break
end
x /= 10
end
y * sign
end
```

## C++ Code

```class Solution {
public:
int reverse(int x) {
int sign = 1;
if(x < 0) {
sign = -1;
x = -x;
}
int int_max = (1 << 31) - 1; //notice the priority of << is lower than -
int dime = int_max / 10;
int tail = int_max % 10 + (sign == 1 ? 0 : 1);

int y = 0;
while(x > 0){
int digit = x % 10;
if(y > dime || (y == dime && digit > tail)){
return 0;
}
y = y * 10 + digit;
x /= 10;
}
return y * sign;
}
};
```