Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
对于数值问题,首先一定要记住,一定要时刻注意溢出问题,这个题目不难,就是要注意对于x >= INT_MAX 或者 x <= INT_MIN 的处理,其他就是边求解每一位的时候,边进行反正;
class Solution {
public:
//边求每一位,边反转,注意溢出的处理(数值问题),特别需要考虑溢出
int reverse(int x) {
if(0 == x)
return 0;
if(x >= INT_MAX || x <= INT_MIN)
return 0;
long long tmpx = abs(x);
long long tmpSum = 0;
int tmpbit = 0;
while(tmpx)
{
tmpbit = tmpx % 10;
tmpSum *= 10;
tmpSum += tmpbit;
tmpx = tmpx / 10;
}
if(tmpSum >= INT_MAX)
return 0;
if(x < 0)
return 0 - tmpSum;
return tmpSum;
}
};