给你一个 32 位的有符号整数 x x x ,返回将 x x x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [ − 2 31 , 2 31 − 1 ] [−2^{31}, 2^{31} − 1] [−231,231−1],就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入: x = 123 x = 123 x=123
输出: 321 321 321
示例 2:
输入: x = − 123 x = -123 x=−123
输出: − 321 -321 −321
示例 3:
输入: x = 120 x = 120 x=120
输出: 21 21 21
示例 4:
输入: x = 0 x = 0 x=0
输出: 0 0 0
提示:
- − 2 31 < = x < = 2 31 − 1 -2^{31} <= x <= 2^{31} - 1 −231<=x<=231−1
题解
tips:
C++中在此对负数取余也得负数,在此于我们普遍认识人数学不一样。
代码
class Solution {
public:
int reverse(int x) {
long long res = 0;
while(x){
res = res * 10 + x % 10;
x /= 10;
}
if(res > INT_MAX) return 0;
if(res < INT_MIN) return 0;
return res;
}
};