给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
示例 1:
输入: 123 输出: 321示例 2:
输入: -123 输出: -321示例 3:
输入: 120 输出: 21来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
Java代码:
public static int reverse(int x) {
long number = 0;
while(x != 0){
number = number *10 + x % 10;
x = x / 10;
}
if(number>Integer.MAX_VALUE || number<Integer.MIN_VALUE){
return 0;
}
return (int)number;
}
注意:如果反转后整数溢出那么就返回 0,注意这句话,这就是代码中 将number定义为 长整形而不是整型的原因。假设 定义 number时定义为 整型,输入 1234567899 ,按理说 应该输出 9987654321 但是 输出结果 超出整形范围,此时 程序内部就会按照自己的方法把这个 长整形转换为整型结果输出,违背题意,所以才将 number 定义为长整形 long。记得 最后 return 时候 将 number 强转为 int ,否则会报错哒。 报错信息: 不兼容的类型: 从long转换到int可能会有损失