7.Reverse Integer
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
这道题的意思是翻转数字,但是不改变正负号,这道题看似很简单,但是暗藏玄机,稍不注意就会出错,我也试了好几遍才通过的,最可能出错的是溢出,包括上溢出和下溢出。比如:1534236469 他自己没有溢出,但是翻转后就溢出了,这种情况还有负数的情况,就不举例说明了。代码如下:
class Solution {
public:
int reverse(int x) {
bool flag = false; //正负
int maxvalue = pow(2, 31) - 1; //防止溢出
int minvalue = pow(2, 31);
if (x > maxvalue || x < minvalue*(-1))
{ return 0; }
if (x < 0)
{ flag = true; }
int newx = 0;
while (x)
{
if ( (!flag && newx > maxvalue / 10) || (flag && newx < minvalue / 10) )
{
newx = 0;
break;
}
newx = newx * 10 + x % 10;
x /= 10;
}
if (flag)
{ return flag*newx; }
return newx;
}
};