不断的取10的余数 放在一个数组里面
这里面有几个边界条件git
-0的状况数组
在代码里,负数若是和正数统一处理的话 注意取反 由于正负最大值差了1code
反转后判断是否超过取值范围,主要就是提早一位与214748364进行比较it
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; } } }