T7. Reverse Integer【Easy】
題目
把一個(gè) Integer 整數(shù)逆轉(zhuǎn)
示例1: x= 123, return 321
示例2: x= -123, return -321
思路
要承認(rèn)這個(gè) Top Solution 寫(xiě)的比我的代碼短多了原献,思路很巧妙(哎真的好短!!!)诡蜓。
它通過(guò)取余數(shù)得到尾數(shù)排惨,然后通過(guò)不斷result*10+尾數(shù)把最開(kāi)始的尾數(shù)始終保持在首位血公,達(dá)到逆轉(zhuǎn)的目的。
但是要注意的是谎替,這里會(huì)出現(xiàn)一個(gè)溢出的問(wèn)題。需要檢測(cè)溢出,并返回0护锤。這個(gè)代碼用公式算回原來(lái)的值看前后是否相同,以此判斷是否溢出减拭。
具體可以看下面代碼以及注釋?zhuān)ㄎ以趺纯傉f(shuō)這句話( ? ?ω?? ))蔽豺。
代碼
代碼取自 Top Solution,稍作注釋
public int reverse(int x)
{
int result = 0;
while (x != 0)
{
//得到末尾的數(shù)
int tail = x % 10;
int newResult = result * 10 + tail;
//這里為了檢測(cè)溢出拧粪,若溢出兩者就不相等了修陡,就返回0
if ((newResult - tail) / 10 != result)
{ return 0; }
result = newResult;
//去掉末尾的數(shù)重新賦給x
x = x / 10;
}
return result;
}```