🐕给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−2的31次方, 2的31 − 1次方] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
提示:
-2的31次方 <= x <= 2的31次方 - 1
🐖思路:
用一个long型变量 L
每次 X 判断是否 取余10 是否为 0 不为则 L*10 加 此余数
x自身除以10
最后 判断 L 和 int(L) 是否相等即可 判断是否越界
上代码
public static int reverse(int x) {
//如果x只有个位数 直接return x即可
if(x == 0 || x%10 == x) {
return x;
}
long L = 0; //这里用long类型是因为怕 x翻转后越界
while(x != 0) {
L = L * 10 + x % 10; //如果x 取余10 有余数 拼接上 L*10
x /=10;
}
// 要返回的时候 判断L 是否 和 转换为int类型的L相等 如果相等证明 没越界 直接返回(int)L 否则返回0
return L == (int)L ? (int)L : 0;
}