Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
题目要求将一个32位整数转换为倒序并输出转换后的整数,且当溢出时返回0。
题目很容易,取模得到最低位,然后将其作为新整数的最高位,重复此操作即可。
判断整数在处理后是否溢出是问题的关键,我的代码中溢出会发生在新整数增加位数的乘十操作处,在判断乘法是否溢出时,只需将乘法的计算结果再除以乘数,观察结果是否与乘法计算前相等即可,比如 c = a * b ,若 a != c / b ,则发生了溢出。
class Solution {
public:
int reverse(int x) {
int n = 0;
int temp = 0;
while (x != 0) {
n += x % 10;
x /= 10;
if (x != 0) {
temp = n;
n *= 10;
if (n / 10 != temp) return 0;
}
}
return n;
}
};