题号:7 题目
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
这个题目需要注意的要考虑越界和数字的正负问题.
我这里用了字符串逆序的方法,效率并不高。应该还有之间二分移位的方法,时间复杂度可能会低一些,没有测试。
public class Solution {
public int reverse(int x) {
int sign=1;
if(x<0){
sign=-1;
}
StringBuilder intStr=new StringBuilder(String.valueOf(x*sign));
String reverseStr=intStr.reverse().toString();
int length=reverseStr.length();
int MAX=Integer.MAX_VALUE;
int MIN=Integer.MIN_VALUE;
int num=0;
int i=0;
while(i<length){
int digital = Character.getNumericValue(reverseStr.charAt(i));
if (sign == 1&& (num > MAX / 10 || (num == MAX / 10 && digital > MAX % 10))) {
num = 0;
break;
}
if (sign == -1
&& (num > MAX / 10 || (num == MAX / 10 && digital > MAX % 10 + 1))) {
num = 0;
break;
}
num = num * 10 + digital;
i++;
}
return sign*num;
}
}