/* Reverse integer */
/*
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
Return 0 if the result overflows and does not fit in a 32 bit signed integer
Overflow detection : Make sure when there's an operation that increase a number, reverse that
operation and it should have the previous number. Otherwise there's overflow.
*/
/*
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
Return 0 if the result overflows and does not fit in a 32 bit signed integer
Overflow detection : Make sure when there's an operation that increase a number, reverse that
operation and it should have the previous number. Otherwise there's overflow.
*/
#include<iostream>
#include<cmath>
using namespace std;
int reverse(int x) {
int t = x;
x = abs(x);
int reversed = 0;
int y;
while(x > 0){
y = reversed;
reversed = 10 * reversed + x % 10;
//reverse the operation and it should have the previous number
if((reversed - x % 10) / 10 != y)
return 0;
x = x / 10;
}
if(t < 0)
reversed = - 1 * reversed;
return reversed;
}
int main(){
cout << reverse(1235463567);
return 0;
}
0 comments:
Post a Comment