这个是逆转32位的int值,看了例子就应该很清楚要干什么了
首先是正负数,这个比较好实现的,用正数进行计算,如果是负数,最后加上负号就好了
其次就是溢出的判断,在溢出里首先是知道最大的int的值是0x7fffffff,然后转换的过程中,先取判断这个转换可不可以做,也就是判断是否会溢出,然后再进行后面的操作
之前看别的博客里有人问为什么ans*10+x%10>max_int不可以,我觉得是因为前面的已经溢出了,再判断结果就会是错的,代码也很短
class Solution {
public:
int reverse(int x) {
int y = 0;
if(x<0)
y = -x;
else y = x;
int max_int = 0x7fffffff;
int ans = 0;
while(y>0)
{
if(ans>((max_int-y%10)/10))
return 0;
else
{
ans = ans*10+y%10;
y = y/10;
}
}
return x>0?ans:-ans;
}
};