给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [?2^31, 2^31 ? 1] ,就返回 0。
public int reverse(int x) {
//记录返回值
int res = 0;
while (x != 0){
//判断是否越界
//@Native public static final int MIN_VALUE = 0x80000000;
// 十进制数 -2147483648
//@Native public static final int MAX_VALUE = 0x7fffffff;
//十进制数 2147483647
//因此可以使用两个字段表示32位有符号整数的范围
if (res < Integer.MIN_VALUE / 10 || res > Integer.MAX_VALUE / 10){
return 0;
}
//取模拿到最低位
int digit = x % 10;
//将每次拿到的最低位反转拼接
res = res * 10 + digit;
//除法去掉最低位
x = x / 10;
}
//返回
return res;
}
原文:https://www.cnblogs.com/mx-info/p/14731068.html