T7. Reverse Integer【Easy】
题目
把一个 Integer 整数逆转
示例1: x= 123, return 321
示例2: x= -123, return -321
思路
要承认这个 Top Solution 写的比我的代码短多了,思路很巧妙(哎真的好短!!!)。
它通过取余数得到尾数,然后通过不断result*10+尾数把最开始的尾数始终保持在首位,达到逆转的目的。
但是要注意的是,这里会出现一个溢出的问题。需要检测溢出,并返回0。这个代码用公式算回原来的值看前后是否相同,以此判断是否溢出。
具体可以看下面代码以及注释(我怎么总说这句话( • ̀ω•́ ))。
代码
代码取自 Top Solution,稍作注释
public int reverse(int x)
{
int result = 0;
while (x != 0)
{
//得到末尾的数
int tail = x % 10;
int newResult = result * 10 + tail;
//这里为了检测溢出,若溢出两者就不相等了,就返回0
if ((newResult - tail) / 10 != result)
{ return 0; }
result = newResult;
//去掉末尾的数重新赋给x
x = x / 10;
}
return result;
}```