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