7 reverse-integer
题目
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
思路
-
可以用long long来做,然后再去比较是否越界,代码略
-
通过求余,将值反向相加,需要考虑到越界的问题
class Solution {
public:
int MAX1 = INT_MAX/10, MAX2 = INT_MAX%10,
MIN1 = INT_MIN/10, MIN2 = INT_MIN%10;
int reverse(int x) {
int res, result = 0;
while(x!=0)
{
res = x%10;
x/=10;
if(result > MAX1 || (result == MAX1 && res>MAX2)) return 0;
if(result < MIN1 || (result == MIN1 && res<MIN2)) return 0;
result = result*10+res;
}
return result;
}
};
注:
c++中求余,负数是按照负数来的,eg:-1%10=-1