反转整数
反转整数,即逆序输出原数字,例如:
输入: 123
输出: 321
输入:-123
输出:-321
下面是使用数学方法的解题步骤:
public int reverse(int x) {
/*
使用数学方法反转,下面是具体步骤
原数字: 321
反转数字:初始化为 0
1.
中间变量 = 原数字 % 10 = 321 % 10 = 1
原数字 = 原数字 / 10 = 321 / 10 = 32
反转数字 = 反转数字 * 10 + 中间变量 = 0 * 10 + 1 = 1
2.
中间变量 = 原数字 % 10 = 32 % 10 = 2
原数字 = 原数字 / 10 = 32 / 10 = 3
反转数字 = 反转数字 * 10 + 中间变量 = 1 * 10 + 2 = 12
3.
中间变量 = 原数字 % 10 = 3 % 10 = 3
原数字 = 原数字 / 10 = 3 / 10 = 0
反转数字 = 反转数字 * 10 + 中间变量 = 12 * 10 + 3 = 123
*/
int n = x;
int ans = 0; // 保存反转后的数字
int i = 0;
int INT_MAX = Integer.MAX_VALUE;
int INT_MIN = Integer.MIN_VALUE;
while (n!=0) {
i = n % 10;
n /= 10;
// 检查越界
if ((ans > INT_MAX / 10)
|| ((ans == INT_MAX / 10) && i > 7)
|| (ans < INT_MIN / 10)
|| ((ans == INT_MIN / 10) && i < -8)) {
return 0;
}
ans = 10 * ans + i;
}
return ans;
}