給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例 1:
輸入:123輸出:321示例 2:
輸入:-123輸出:-321示例 3:
輸入:120輸出:21注意:
假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−2^31, 2^31 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。
思考:
將數字進行反轉比較簡單,開始看例項的以為要單獨處理3種情況,後來寫了下發下負數和末尾為0的都可以歸到一類直接處理,進行迴圈的標準就是 x!=0,因為每次迴圈x的數字都要向前走乙個(x = x /10),然後定義乙個newnum。重點在注意項,我們儲存的數值範圍,反轉溢位就返回0。
「to check for overflow/underflow, we could check if ret > 214748364 or ret < –214748364 before multiplying by 10. on the other hand, we do not need to check if ret == 214748364, why? (214748364 即為 int_max / 10)」
我們只需要檢查當前的newnum的絕對值大於214748364就可以了,因為如果大於了,下次再乘以10必定溢位,因為2^31-1=2147483647,-2^31=-2147483648,若此時是214748365,那麼無論最後一位是幾(實際上最後一位肯定是1或者2,因為輸入的數字也必定是在數值範圍內的),都溢位了。並且因為這個原因不用檢查214748364,因為最後一位新增了(1或2)也是在範圍內。
class solution
return newnum;
}};
7 整數反轉
鏈結 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321示例2 輸入 123 輸出 321示例 3 輸入 120 輸出 21注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後...
7 整數反轉
解法一 對輸入數字進行整除和取餘運算,並把輸出值乘以10後與每次取餘的結果相加,直到原資料變為0 每次迴圈,原數對10取餘 結果乘以10,同時原數對10整除。c int reverse int x return rev python def reverse self,x r 0 返回值 flag 1...
7 整數反轉
有些讀者反映我寫的內容太簡單,有時候看不懂思路,我以後會記得寫好思路。一 數值法 1.取出符號位 2.10一次取出x的每一位,再 10變為ans 3.判斷是否超出 output 0if x 0 flag 1else flag 1 x abs x while x 0 res x 10 x int x ...