1. 程式人生 > >leetcode7.反轉整數

leetcode7.反轉整數

給定一個 32 位有符號整數,將整數中的數字進行反轉。

示例 1:

輸入:123
輸出:321

示例 2:

輸入:-123
輸出:-321

示例 3:

輸入:120
輸出:21

注意:

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

思路:轉換成String利用reverse()函式取反,然後完成後再轉換成int即可。

遇到的問題:負數無法直接轉換,需要{負數->絕對值,反轉的絕對值->負數}。

class Solution {
    public int reverse(int x) {
        //正數的邊界(絕對值)
        String z = "2147483647";
        //負數的邊界(絕對值)
        String c = "2147483648";
        //正數情況
        if(x>0)
        {
            String y;
            //轉換成String
            y = String.valueOf(x);
            //取反
            y =new StringBuffer(y).reverse().toString();
            //判斷是否反轉後溢位
            if(y.length()>=z.length()&&y.compareTo(z)>0)
                return 0;
            //不溢位時,轉換會int
            x = Integer.valueOf(y).intValue();
                return x;
        }
        else{
            x = -x;
            String y;
             //轉換成String
            y = String.valueOf(x);
            //取反
            y =new StringBuffer(y).reverse().toString();
            //判斷是否反轉後溢位
            if(y.length()>=c.length()&&y.compareTo(c)>0)
                return 0;
            //不溢位時,轉換會int,負數返回負值
            x = Integer.valueOf(y).intValue();
                return -x;
        }
    }
}