不断的取10的余数 放在一个数组里面
这里面有几个边界条件
-0的情况
在代码里,负数如果和正数统一处理的话 注意取反 因为正负最大值差了1
反转后判断是否超过取值范围,主要就是提前一位与214748364进行比较
public class Solution {
public int reverse(int x) {
if (x == 0)
return x;
if (x == -2147483648) {
return 0;
}
int[] digits = new int[10];
boolean isPositive = true;
if (x < 0) {
isPositive = false;
x = -x;
}
int i = 0;
while (x >= 10) {
digits[i] = x % 10;
i++;
x = x / 10;
}
digits[i] = x;
i++;
int length = i;
int y = 0;
for (int j = 0; j < length; j++) {
y = y * 10 + digits[j];
if (y > 214748364 && j < (length - 1)) {
return 0;
} else if (y == 214748364 && j < (length - 1)) {
if (isPositive) {
if (digits[9] > 7) {
return 0;
}
} else {
if (digits[9] == 9) {
return 0;
} else if (digits[9] == 8) {
return -2147483648;
}
}
}
}
if (isPositive) {
return y;
} else {
return -y;
}
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。