整數翻轉(簡單型別)---Leetcode
阿新 • • 發佈:2019-01-08
題目地址
不知道什麼叫整數溢位,看了別人的部落格才知道,
就是運算過程中超出了實際32位有符號整數位最大的值和最小值
然後就複製了別人的這樣一行程式碼
if( rlt>0x7fffffff || rlt<(signed int)0x80000000)
return 0;
到了 1534236469 這個數就不行。debug發現原來是編譯器在計算時發現溢位了自動重新設定了個數
發現這個數時無規律的(可能有,反正就是正確的不一樣)。
於是根據自己的演算法每次都要加x%10,每次加的結果rlt求餘–>若是和前一步x求的餘數不一樣則說明發生了溢位
至此解決。也不用加前面的那行程式碼。下面是程式碼,20ms
int reverse(int x) {
int rlt = 0;
int i = 1;
if(x == 0)
return 0;
while(x!=0){
rlt = x%10+rlt*10;
if(rlt%10!=x%10)
return 0;
x = x/10;
i++;
}
return rlt;
}
----------------------------整數溢位知識待補充-------------------------------