leetcode每日一题-7:整数反转
链接
整数反转
题目
分析
题目不是很难,但是细节很多,并且不允许存储64位整数,需要考虑很多的东西.在之后的代码部分逐一分析.
代码
C++
class Solution {
public:
int reverse(int x) {
int f = 1;
// 标记一下正数还是负数
if(x < 0) f = -1;
int maxn = INT_MAX;
int inf = INT_MIN;
int res = 0;
// 负数的最小值反转后超出了范围,提前范围,避免下面的abs报错
if(x == inf) return 0;
x = abs(x);
while(x > 0)
{
// 依次取出最低位
int t = x % 10;
// 如果当前res * 10 > maxn,那么就超出了范围
if(res > maxn / 10) return 0;
// 不超范围就更新res的值
res = res * 10 + t;
// 更新x的值
x /= 10;
}
// 返回带标志位的res
return f * res;
}
};
Java
官方题解没有转化成正数求解,而是一起计算
class Solution {
public int reverse(int x) {
int rev = 0;
while (x != 0) {
if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) {
return 0;
}
int digit = x % 10;
x /= 10;
rev = rev * 10 + digit;
}
return rev;
}
}
作者:LeetCode-Solution