Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
click to show spoilers.
Have you thought about this?
Here are some good questions to ask before coding. Bonus points for you if you have already thought through this!
If the integer’s last digit is 0, what should the output be? ie, cases such as 10, 100.
Did you notice that the reversed integer might overflow? Assume the input is a 32-bit integer, then the reverse of 1000000003 overflows. How should you handle such cases?
For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
这道题是翻转数字,但是如果考虑不全就会掉进坑里。
注意的2个点:1 溢出问题。当翻转的数字表示范围超出了int的表示范围。
2:如果一个数字的末尾是0又改如何处理
3:负数又改如何处理。
public int reverse(int x) {
int result = 0;
if(x==0) return 0;
while(x!=0){
if(Math.abs(result)> Integer.MAX_VALUE/10) return 0;
result = result*10 + x%10;
x/=10;
}
return result;
}
Math.abs(result)> Integer.MAX_VALUE/10。
int 的最大值是 2147483647。所以任何数的翻转结果都小于int的最大值。