1. 程式人生 > >leetCode 7. Reverse Integer (數字反轉) 解題思路與方法

leetCode 7. Reverse Integer (數字反轉) 解題思路與方法

問題:

Reverse Integer 


Reverse digits of an integer.

Example1: x = 123, return 321

Example2: x = -123, return -321

本題需要注意的地方在於數字反轉後有可能溢位,所以需要判斷時候溢位,溢位時返回0。

本題用了兩種方法實現,第一種是反轉字串,第二種是直接迴圈讀出末尾資料。

具體解法如下:

字串解法:

    public int reverse(int x) {
        String s = x + "";
        StringBuffer sb = new StringBuffer("");
        if(x < 0){
            for(int i = s.length() - 1;i > 0; i--){
                sb.append(s.charAt(i));
            }
            try{
            	int y = Integer.parseInt(sb.toString());
            	return -1*y;
            }
            catch(Exception e){
            	return 0;
            }
        }
        else{
            for(int i = s.length() - 1;i >= 0; i--){
                sb.append(s.charAt(i));
            }
            try{
            	int y = Integer.parseInt(sb.toString());
            	return y;
            }
            catch(Exception e){
            	return 0;
            }
        }
    }
直接解法:此法程式碼簡潔易懂,而且效率上要比字串解法要高一些。
    public int reverse1(int x) {
        long result = 0;
        while(x != 0){
            result = result*10 + x%10;
            x /= 10;
        }
        return (int) (result = result > 2147483647 || result < -2147483648 ? 0 : result);
    }