给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
class Solution {
public:
int reverse(int x) {
int rev=0;
while(x!=0){
int temp=x%10;
x/=10;
if(rev>INT_MAX/10||(rev==INT_MAX/10&&temp>7)) return 0;
if(rev<INT_MIN/10||(rev==INT_MIN/10&&temp<-8)) return 0;
rev=rev*10+temp;
}
return rev;
}
};
判断溢出条件那里是因为
INT_MAX%10=7 所以当rev==INT_MAX/10时,如果temp>7
rev*10+temp就会大于INT_MAX,下溢同理,temp要<-8
174

被折叠的 条评论
为什么被折叠?



