不斷的取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; } } }