1. 當x爲負數時。將a=x%10,得到x的個位數。x=x/10得到除去個位數的其他幾位數。將a*10+x%10,後面的數依次內推。
例如:x=235
(5*10+3)*10+2=532.
2. 當x爲負數時,這種思路也是成立的。
例如:x=-236
((-6*10)+(-3))*10+(-2)=-632
3. 考慮overflow情況。
x*10+y=x'---->(x'-y)/10=x
左邊的式子轉換爲右邊的式子,如果右邊的式子不成立,則溢出。
public class Solution7 {
public int reverse(int x) {
int rev=0;
while(x!=0)
{
int newrev=rev*10+x%10;
if(((newrev-x%10)/10)!=rev)//檢查是否溢出
return 0;
rev=newrev;
x=x/10;
}
return rev;
}
}