7.整數反轉 負數如何處理 如何判斷是否溢出

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;   
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章