一、问题描述
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.
这道题不难,难在逆转之后的数可能超过32bits,所以需要判断是否会溢出。
三、代码
class Solution {
public:
int reverse(int x) {
int digit = 0;
int carry = 0;
while (x != 0) {
carry = x % 10;
if (digit > INT32_MAX / 10 || digit < INT32_MIN / 10){ //判断是否会溢出
return 0;
}
digit = digit * 10 + carry;
x /= 10;
}
return digit;
}
};