LEETCODE 7 Reverse Integer (JAVA題解)
阿新 • • 發佈:2018-12-27
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); } }