对于输入1534236469,我在反向和反向1中得到2个不同的答案-反向1在做什么,这是错误的吗?
/ ** *给定一个32位带符号整数,整数的反数字。 * *示例1: * *输入:123输出:321示例2: * *输入:-123输出:-321示例3: * *输入:120输出:21注意:假设我们正在处理一个环境, *只能存储32位有符号整数范围内的整数:[−231,231 *-1]。对于此问题,假定您的函数返回0 *当反向整数溢出时。 * /
公共类ReverseInteger {
public static int reverse1(int x) {
int multiplicationFactor = 1;
if (x < 0) {
multiplicationFactor = -1;
}
x = Math.abs(x);
int reverse = 0;
int remainder = 0;
while (x > 0) {
remainder = x % 10;
x = x / 10;
reverse = reverse * 10 + remainder;
}
if (reverse > Integer.MAX_VALUE || reverse < Integer.MIN_VALUE) {
return 0;
}
return reverse * multiplicationFactor;
}
public static int reverse(int x) {
long reverse = 0;
boolean negative = x < 0;
x = Math.abs(x);
while (x > 0) {
int y = x % 10;
x = x / 10;
reverse = reverse * 10;
reverse = reverse + y;
}
if (negative) {
reverse = -1 * reverse;
}
if (reverse > Integer.MAX_VALUE || reverse < Integer.MIN_VALUE) {
return 0;
}
return (int) reverse;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
reverse(1534236469);//output- 0
reverse1(1534236469);//output- 1056389759
// 2147483647
}
}
答案 0 :(得分:0)
reverse1-使用int反向-结果溢出- reverse2-使用长反向-没有结果溢出