题目:
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
对输入的整数进行翻转,保留符号,与之前做过的atoi有点类似。
算法大致思想:
1. 对于输入的x,先mod10,得到余数,
2. 然后对上一次计算的结果(结果最开始是0)做进位(乘以10)操作,再加上这个余数,得到本次计算的结果,
3. 每一次计算后都对x右移一位(x/=10),
4. 循环条件为x>0
与上一次做的atoi类似,在计算过程中,检测计算前的res值与计算后的res/10,是否相等,不相等则发生溢出,return 0。
最后实现代码:
int reverse(int x) {
if (x == INT_MIN) return 0;
int res = 0;
int isNag = 1;
int _x = x;
if (x < 0) {
isNag = -1;
_x = 0 - x;
}
while (_x > 0) {
int oldres = res;
res = (_x % 10) + res * 10;
if (res / 10 != oldres) return 0;
_x /= 10;
}
return res * isNag;
}