[LeetCode] 7. Reverse Integer
描述:符号位不变,反转整数的各个数字(digits)。输入为 32 位有符号整数。如果反转后有整数溢出,则应返回 0。
思路:与反转位操作一样,循环除 10 取余即可。符号位单独计算。考虑到有溢出,所以用 long long 来操作数据。
代码:
class Solution {
public:
int reverse(int x) {
long long n = 0;
long long t = x;
bool neg = x < 0;
if(x < 0) t = -t;
while(t){
n = n * 10 + t % 10;
t /= 10;
}
if(neg && n - 1 > INT_MAX || !neg && n > INT_MAX)
return 0;
else
return (int)(neg ? -n : n);
}
};