#### Approach #1 One pass solution [Accepted]

**Algorithm**

In this algorithm we are following the usual method of reversing an integer. That is extract the digit from the end, multiplying it by 10 and then adding it to the answer.

Some extra steps are to be followed for this question.

- First we need to take care of the sign of the number
- We need to take care of the overflow condition

The following check does exactly that:

```
if((newResult-remainder)/10!=result) {
return 0;
}
```

Note: Mod 10 extracts a digit from the end of the number and / by 10 extracts a digit from the beginning of the number

**Java**

```
public class Solution {
public static int reverse(int x) {
int sign=1;
if(x<0) {
sign = -1;
x=Math.abs(x);
}
int newResult=0,result=0;
//reversing an integer
while(x>0)
{
int remainder=x%10;
newResult=result*10+remainder;
if((newResult-remainder)/10!=result) {
return 0;
}
result=newResult;
x=x/10;
}
return newResult*sign;
}
```

**Complexity Analysis**

- Time complexity : O(n).

Since we are extracting every digit one by one and only one for loop is used the complexity will be O(n)