题目:
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
class Solution {
public:
int reverse(int x)
{
int res = 0;
// 错误一: 没有注意 x 的更新,
//每次循环后 x = x/10; 只在脑子里想了,没有用代码表现出来
// 错误二:在if判断条件里,没有除以10,导致数据溢出,也就是超出了int类型的范围
// 错误三:顺序写反了,应该先判断,然后再对res 更新,否则会少一次判断
while(x)
{
if(res>INT_MAX/10 || res<INT_MIN/10)
{
return 0;
}
res = res * 10 + x % 10;
x /= 10;
}
return res;
}
};