## Reverse Integer

Reverse digits of an integer.

**Example1:**x = 123, return 321

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

### Analysis:

Simple question. Just be careful with the last digit and positive/negative.Also be careful with the corner cases.

Idea is to keep x/10 for the original int and *10 for the result int + x%10.

**Note that in Python, when compute -1/10 the result is -1 not the expected 0.**

**This is because the "floor" function for the int division.**

**E.g., math.floor(0.89) = 0**

**math.floor(-0.89) = -1**

So I check the positive and negative sign in the python code.

The number 214748364 in python code is the maxint/10 = 2147483647/10.

### Code(C++):

class Solution { public: int reverse(int x) { int res = 0; while (x!=0){ if (res > INT_MAX/10 || res < INT_MIN/10){ return 0; } res = res*10+ x%10; x= x/10; } return res; } };

### Code (Python):

class Solution: # @return an integer def reverse(self, x): res = 0 if x>=0: pos = True else: pos = False x = -x while not x == 0: if res > 214748364: return 0 else: res = res*10 + x%10 x = x/10 if pos: return res else: return -res

What about the overflow cases?

ReplyDeleteSorry, I don't really get what you mean by overflow cases, could you give an example?

DeleteAssuming an integer is 32-bits, if x = 2147483643, the reversed integer would be 3463847712, which certainly overflows. I think you need to handle this in your code, cause otherwise the problem is just too trivial and meaningless. Also, it is not necessary to check whether x is positive or not, just replace the termination condition of while loop with x!=0 and your code will handle all positive and negative cases correctly.

Deletejust take a bigger type for res such as long , and put an extra condition saying if res > INT_MAX return 0

Deletecan anyone explain why this weird test case:

DeleteInput: 1534236469

Output: 1056389759

Expected: 0

@Yu Zhu are you sure your either of above solution got accepted at leetcode ?

Deletebecause I got WA :

Input: 1534236469

Output: 1056389759

Expected: 0

you didn't take care of overflow cases. Did you?

Thanks for your reply, I think it might because this post was written long time ago and leetcode oj has changed some of the test cases. Now I have changed the code and tested on OJ.

DeleteThanks.