题目:
方法:
int x 将int整数的每一位取出
个位
除了个位的其他位
【C++中的取模运算与数学上的取模运算的区别】
【C++】: ;
【数学中】:取模的余数必须为正
将取出的每一位重新组成int整数
设int r = 0
其中x是具体每一位 【秦九韶算法的应用】
INT_MAX是个常量,表示int的最大值;INT_MIN表示最小值。
如果r为正数,溢出表示为 INT_MAX
题解:
法一:
class Solution {
public:
int reverse(int x) {
int r = 0;
while(x) {
if(r > 0 && r > ((INT_MAX - x % 10) / 10)) return 0;
if(r < 0 && r < ((INT_MIN - x % 10) / 10)) return 0;
r = r * 10 + x % 10;
x /= 10;
}
return r;
}
};
法二:
class Solution {
public:
int reverse(int x) {
long long r = 0;
while(x) {
r = r * 10 + x % 10;
x /= 10;
}
if(r > INT_MAX) return 0;
if(r < INT_MIN) return 0;
return r;
}
};