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

 

你可能感兴趣的:(算法,算法)