题目传送门
链接:https://leetcode-cn.com/problems/reverse-integer/
题干
题解
我的方法是首先记录数字的正负,再把数字取绝对值
按位将数字翻转,并且每次都判断数字是否大于 INT_MAX / 10,如果大于说明会溢出,此时返回0即可
Code
class Solution {
public:
int reverse(int x) {
int f = 0;
if (x < 0) f = -1;
else if (x > 0) f = 1;
x = abs(x);
int res = 0;
while (x > 0) {
if (res > INT_MAX / 10)
return 0;
res *= 10;
res += x % 10;
x /= 10;
}
return f * res;
}
};