LeetCode算法題 —— 反轉整數

題目

給出一個32位的有符號整數,數值範圍在[-2^31, 2^31-1]。要求輸出翻轉的整數。如果反轉的整數不在數值範圍內則是溢出,輸出0。如:輸入1234,輸出4321;輸入-45,輸出-54

思路

將數字轉爲字符串,然後反轉即可,不過要注意反轉後的數字可能會溢出的問題。

代碼

  public int reverse(int x) {
        //將數字轉爲字符串
        String numStr = x + "";
        //用於判斷是否是負數
        Boolean isMinus = false;
        if (numStr.indexOf("-") == 0) {
            //負數的符號不可反轉,只反轉數字
            numStr = numStr.substring(1);
            isMinus = true;
        }
        //字符串反轉
        numStr = new StringBuffer(numStr).reverse().toString();
        //字符串轉數字
        int num = 0;
        try{
            num = Integer.parseInt(numStr);
        }catch(Exception e){
            //溢出返回0
            return 0;
        }
        if (isMinus) {
            num = -1 * num;
        }
        //是否溢出
        int minNum =  (int) (Math.pow(2,31)) * -1;
        int maxNum = (int) Math.pow(2,31) - 1;
        if (num < minNum || num > maxNum) {
            return 0;
        }
        return num;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章