1. 程式人生 > >LEETCODE 7 Reverse Integer (JAVA題解)

LEETCODE 7 Reverse Integer (JAVA題解)

https://leetcode.com/problems/reverse-integer/

原題如上,越簡單的題目,越考功底。

一般的解題思路,相信大家已經有了。關鍵是邊界情況

關鍵是,在JAVA中,int都是有符號的,而且最大是2147483647,最小是 -2147483648.

如果一個數是1023456789,正常思維,轉換過來是9876543201>2147483647,但這不是一個int 數,自己寫一個測試案例,會發現OJ會將這種情況以0作為答案輸出

因此,在轉換過程中,為了防止溢位,一律要用long型別的資料。

點到即止

解題原始碼如下

public int reverse(int x) {
        
        //為防止溢位,先轉為long
        long temp=x;
        //獲取符號
        int sgn=temp>0?1:-1;
        temp=sgn*temp;
        
        //結果值
        long result=0;
        
        do{
            result=result*10+temp%10;
            temp/=10;
        }while(temp>0);
        
        //處理溢位情況
        if((sgn>0 && result>Integer.MAX_VALUE) || (sgn<0 && result>(long)Integer.MAX_VALUE+1)){
            return 0;
        }else{
            return (int)(sgn*result);
        }
    }