Java算法反轉整數

假設我們的環境只能存儲 32 位有符號整數,其數值範圍是 [−231, 231 − 1]。根據這個假設,如果反轉後的整數溢出,則返回 0。(例如 :123=>321,120=>21)
我的錯誤代碼:未考慮數值的範圍

class Solution {
    public int reverse(int x) {
        int rev = 0;
        while(x != 0){
            int pop = x % 10;
            x = x / 10;
            rev = rev * 10 + pop;                 
        }
        return rev;  
    }
}

改正後:(方法:方法:彈出和推入數字 & 溢出前進行檢查)

public int reverse(int x) {
		int rev = 0;   
		System.out.println(Integer.MAX_VALUE);    //21474836487
		System.out.println(Integer.MIN_VALUE);    //-2147483648
		while(x != 0) {
			int pop = x % 10;   // 取得餘數 
			x /= 10;           //進行去位 
			//判斷是否正溢出
			if(rev > Integer.MAX_VALUE / 10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)) {
				return 0;
			}
			//判斷是否負溢出
			if(rev < Integer.MIN_VALUE / 10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) {
				return 0;
			}
			
			rev = rev * 10 + pop;    //求出反轉整數
		}
		
		return rev; 
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章