整數(shù)反轉(zhuǎn)

給出一個(gè) 32 位的有符號(hào)整數(shù),你需要將這個(gè)整數(shù)中每位上的數(shù)字進(jìn)行反轉(zhuǎn)。

示例 1:

輸入: 123
輸出: 321
示例 2:

輸入: -123
輸出: -321
示例 3:

輸入: 120
輸出: 21
注意:

假設(shè)我們的環(huán)境只能存儲(chǔ)得下 32 位的有符號(hào)整數(shù),則其數(shù)值范圍為 [?231, 231 ? 1]。請(qǐng)根據(jù)這個(gè)假設(shè),如果反轉(zhuǎn)后整數(shù)溢出那么就返回 0。

來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/reverse-integer
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

解題思路:

不允許新建棧、和數(shù)組的情況下,可以用數(shù)學(xué)的方式來(lái)解決,我們可以定義一個(gè)變量,原值操作一個(gè),變量跟著做相應(yīng)操作,
通過(guò)循環(huán)將數(shù)字x的每一位拆開(kāi),原值除以10,變量乘以10,如下

//整數(shù)反轉(zhuǎn)
    class Solution {
        public int reverse(int x) {
            int result=0;
            while(x != 0){
              //整除之后的余數(shù)
               int pop=x%10;
               result=result*10+pop;
               x=x/10;
            }
            return result;
        }
    }

但是上述情況會(huì)有例外,當(dāng)原值不大于int類型最大時(shí),最終反過(guò)來(lái)的值可能會(huì)大于最大,溢出了,所以要加溢出條件(大于最大(MAX_VALUE) | | 小于最小(MIN_VALUE)),判斷最終結(jié)果 =result10+pop;的范圍,

1.大于最大 (當(dāng)result*10+pop>MAX_VALUE)

1,當(dāng)result>MAX_VALUE/10 還有pop需要添加 則必然不符合條件溢出
2,當(dāng)ans == MAX_VALUE / 10 且 pop > 7 時(shí),則一定溢出,7是2^31 - 1的個(gè)位數(shù)

2.小于最小 (當(dāng)result*10+pop<MIN_VALUE)

1,當(dāng)result<MIN_VALUE/10 還有pop需要添加 則必然不符合條件溢出
2,當(dāng)ans == MIN_VALUE / 10 且 pop < -8 時(shí),則一定溢出,8是-2^31的個(gè)位數(shù)

最終代碼:

class Solution {
   public int reverse(int x) {
       int result = 0;
       while (x != 0) {
           int pop = x % 10;
           if (result > Integer.MAX_VALUE / 10 || (result == Integer.MAX_VALUE / 10 && pop > 7)) 
               return 0;
           if (result < Integer.MIN_VALUE / 10 || (result == Integer.MIN_VALUE / 10 && pop < -8)) 
               return 0;
           ans = result * 10 + pop;
           x /= 10;
       }
       return result;
   }
}

每天一算法,成功有方法。堅(jiān)持?。。?/p>

原文地址

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。