leetcode7 整數翻轉(對於整數數位操做的簡潔算法)

【題目描述】css

給出一個 32 位的有符號整數,你須要將這個整數中每位上的數字進行反轉。程序員

示例 1:spa

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

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

輸入: 120
輸出: 21
注意:內存

假設咱們的環境只能存儲得下 32 位的有符號整數,則其數值範圍爲 [−231,  231 − 1]。請根據這個假設,若是反轉後整數溢出那麼就返回 0。leetcode

【題解】io

顛倒正負存在新的數裏,要從原來的數最後一位開始在新數裏累加class

便是 += x % 10循環

處理完第一個數,以後要處理第二位,也就是x % 100,若是加入循環,則循環條件設置爲:

x / 10

對於返回的整型re,每一次放入一個新的數時,原來的數左移一位,也就是:

re * 10

對於溢出的判斷我一開始的想法是直接讓int溢出,溢出以後re值正負顛倒,此時只須要判斷本來X的值正負與re不一樣便可

但是leetcode它報錯!!!它不讓我天然溢出!!!

好的我向平臺低頭

接下來就是把re設置成long int 判斷是否大於2^31 - 1或者小於-2^31 + 1

1 int reverse(int x){
2     long int re = 0;
3     for(; x; x /= 10)
4         re = re * 10 + x % 10;
5     if (re > 2147483647 || re < -2147483648)
6         return 0;
7     else
8         return re;
9 }

代碼如上

執行結果:
經過
執行用時 :0 ms, 在全部 C 提交中擊敗了100.00%的用戶
內存消耗 :5.9 MB, 在全部 C 提交中擊敗了100.00%的用戶

 

我是一個菜鳥程序員,我從最簡單的簡單題慢慢作起,它雖然簡單,但我每一道都要作到最好

相關文章
相關標籤/搜索