Leetcode 7. Reverse Integer

不斷的取10的餘數 放在一個數組裏面
這裏面有幾個邊界條件git

  1. -0的狀況數組

  2. 在代碼裏,負數若是和正數統一處理的話 注意取反 由於正負最大值差了1code

  3. 反轉後判斷是否超過取值範圍,主要就是提早一位與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;
        }
    }
}
相關文章
相關標籤/搜索