编程语言是 Java,代码托管在我的 GitHub 上,包括测试用例。欢迎各种批评指正!
<br />
题目 —— Reverse Integer
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
<br >
解答
题目大意
反转一个整数的所有整数位。解题思路
对于整数取位数,我们一下能想到的方法就是除以 10 取余数,这样循环取位,就是倒序的,然后我们在另一个整数中 *10 再加上这个余数即可。代码实现
public class Solution {
public int reverse(int x) {
int result = 0;
while (x != 0) {
int remainder = x % 10;
int newResult = result * 10 + remainder;
if ((newResult - remainder) / 10 != result) {
return 0;
}
result = newResult;
x = x/10;
}
return result;
}
}
-
小结
对于该题目注意两点:- 循环的跳出条件,因为 x 可正可负,所以等于 0 时退出。
- 翻转整数可能引起溢出,但是溢出分正负两种情况,如何判断溢出呢?这里减去余数以后,再除以 10,判断和运算之前的结果是否相等即可。