题目描述:
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入: x = 123
输出: 321
示例 2:
输入: x = -123
输出: -321
示例 3:
输入: x = 120
输出: 21
示例 4:
输入: x = 0
输出: 0
Tips:
- 很有意思的一个题,建议输出一下INT_MAX和INT_MIN
- 大于0和小于0的x,分开判断
Code:
class Solution {
public:
int reverse(int x) {
int maxx=INT_MAX;
int minn=INT_MIN;
int ans=0;
int f=1;
if(x<0){
f=-1;
}
while(x){
//判断如果x大于0,用ans和INT_MAX/10比较一下
//判断如果x小于0,用ans和INT_MIN/10比较一下(绝对值)
if(((f==1)&&(ans>maxx/10)||(f==-1&&abs(ans)>abs(minn/10)))){
return 0;
}
ans*=10;
ans+=(x%10);
x/=10;
}
return ans;
}
};
-231 <= x <= 231 - 1