题目描述
将给出的整数x翻转。
例1:x=123,返回321
例2:x=-123,返回-321
你有思考过下面的这些问题么?
如果整数的最后一位是0,那么输出应该是什么?比如10,100
你注意到翻转后的整数可能溢出吗?假设输入是32位整数,则将翻转10000000003就会溢出,你该怎么处理这样的样例?抛出异常?这样做很好,但是如果不允许抛出异常呢?这样的话你必须重新设计函数(比如添加一个额外的参数)。
输入
-123
输出-321
代码实现
import java.util.*;
public class Solution {
/**
*
* @param x int整型
* @return int整型
*/
public int reverse (int x) {
// write code here
int end = 1,res=0;
while(x!=0){
end=x%10;//取最后一位
//因为下一步需要*10加上余数所以需要提前判断,防止越界。
//如果x是正数,但是不能大于Integer的最大值,如果Integer是负数,不能小于Integer的最小值。越界都返回0
if(x>0&&((Integer.MAX_VALUE-x%10)/10<res)||x<0&&((Integer.MIN_VALUE-x%10)/10>res)){
return 0;
}
res=res*10+end;
x=x/10;
}
return res;
}
}