LeetCode第7題---整數反轉

                                  LeetCode第7題---整數反轉


題目描述:

 

給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

示例 1:

輸入: 123
輸出: 321
 示例 2:

輸入: -123
輸出: -321
示例 3:

輸入: 120
輸出: 21
注意:

假設我們的環境只能存儲得下 32 位的有符號整數,則其數值範圍爲 [−231,  231 − 1]。請根據這個假設,如果反轉後整數溢出那麼就返回 0。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/reverse-integer
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

想法:

反轉一個整數,只需要將x取餘,然後x除以10,直到最後x/10==0就可以了。

例如:

123

res=0

x取餘等於3    res=res*10+3=3     x=123/10=12

x取餘等於2    res=res*10+2=32    x=12/10=1

x取餘等於1    res=res*10+1=321    x=1/10=0(算法停止)

代碼:

class Solution {
	/**
	 * 給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
	 * @param x
	 * @return
	 */
    public int reverse(int x) {

    	//記錄結果
    	int res=0;
    		
    	/*
    	 * 循環體,反轉一個數據,用除法和取餘便能實現
    	 */
    	while(x!=0){
    		
           
            //題目裏說了,計算機只能存下32位的數據
            if (res > Integer.MAX_VALUE / 10  || (res == Integer.MAX_VALUE / 10 && x > 7)) 
                return 0;
            if (res < Integer.MIN_VALUE / 10 || (res == Integer.MIN_VALUE / 10 && x < -8)) 
                return 0;


            res = res * 10 + x % 10;
            x /= 10;
    	}
    	
        	return res;
  	
    }
}

 

總結:

學習了整數反轉的方法,在判斷溢出時花費了太多時間。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章