Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
题目意思:反转一个int,返回的时候如果超过32位则返回0
本来这么简单的题目不想写文章,但是遇到一个测试用例莫名其妙的用加负号和~a+1的办法都不能将其变成正数,想了半天原来是超过int的最大值,将Integer里面的静态成员变量输出一下看到负数的值比正数大一的。只好把int转换成long,再用StringBuilder的字符串反转来做,也可以用循环来做,那样麻烦一点,就是一边除一边乘而已。附上我的代码:
public int reverse(int x) {
StringBuilder a=null;
long temp=x;
if(x>0) {
a =new StringBuilder(""+temp);
}else {
a = new StringBuilder(~temp+1+"");
}
a.reverse();//返回时判断是否太大
long b =Long.parseLong(a.toString());
if(b>Integer.MAX_VALUE || b<Integer.MIN_VALUE) {
return 0;
}else if(temp<0) {
return -(int)b;
}else {
return (int)b;
}
}