【leetcode】7. Reverse Integer
程序员文章站
2022-07-15 14:38:23
...
题目:
Given a 32-bit signed integer, reverse digits of an integer.
思路:
这道题本身并不难,但是会出现溢出问题。你要保证转换后的数字不能溢出。而且,算法中任意一个变量溢出都会编译不通过。所以,用一个比较大的数存放sum,然后结合INT_MAX和INT_MIN来判断是否溢出。
代码实现:
class Solution {
public:
int reverse(int x) {
if (x == INT_MAX || x == INT_MIN){ // 对x进行溢出判断
return 0;
}
if (x == 0){
return 0;
}
long long sum = 0;
while (x % 10 == 0){
x /= 10;
}
while (x){
long long tmp = sum*10;
if (tmp > INT_MAX || tmp < INT_MIN){ // 运行时进行溢出判断
return 0;
}
sum *= 10;
sum += x % 10;
x /= 10;
}
return sum;
}
};