题目链接
思路分析
这道题目思路相对简单,我们对于反转一个数已经很娴熟了,需要使用到的是我们的 / 操作和 % 操作
- / 也就是我们常用的除法,通常用来对一个数取商 5 / 2 = 2 8 / 2 = 4
- % 是我们常用的取余操作,通常用来对一个数取其余数 5 % 2 = 1 8 % 2 = 0
这道题目需要注意的一个点就是我们需要考虑整数数值溢出
对于1534236469 这个整数来说,反转之后的结果超出了我们整数所能表示的范围,因为需要考虑边界,在反转一次之后,我们就要考虑该数下一次是否会超过范围,如果会则返回0,不会,则继续参与运算
解题代码
class Solution {
public:
int reverse(int x) {
//朴实无华的反转
int ret = 0;
while(x)
{
if(ret > INT_MAX / 10 || ret < INT_MIN / 10)
return 0;
ret = ret * 10 + x % 10;
x /= 10;
}
return ret;
}
};