1. 程式人生 > >整數翻轉(簡單型別)---Leetcode

整數翻轉(簡單型別)---Leetcode

題目地址
不知道什麼叫整數溢位,看了別人的部落格才知道,
就是運算過程中超出了實際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;
}

----------------------------整數溢位知識待補充-------------------------------