題目描述
給定一個 32 位有符號整數,將整數中的數字進行反轉。
示例 1:
輸入: 123 輸出: 321 示例 2:
輸入: -123 輸出: -321 示例 3:
輸入: 120 輸出: 21 注意:
假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231, 231 − 1]。根據這個假設,如果反轉後的整數溢位,則返回 0。
思路分析
1.先從10位進行取餘操作獲得當前整數位的最後一位數字。 2.把整數位除以10縮減一位 3.再用10*上次結果加上餘數 4.判斷32位有符號整數最大值和最小值除以10,和個數位是否大於7和小於-8
public static int Reverse(int x)
{
int rev = 0;
while (x != 0)
{
int pop = x % 10;
x /= 10;
if (rev > Int32.MaxValue / 10 || (rev == Int32.MaxValue / 10 && pop > 7)) return 0;
if (rev < Int32.MinValue / 10 || (rev == Int32.MinValue / 10 && pop < -8)) return 0;
rev = rev * 10 + pop;
}
return rev;
}複製程式碼