整数的倒数位-类似的代码不同的输出

时间:2019-02-05 17:14:23

标签: integer reverse

对于输入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

}

}

1 个答案:

答案 0 :(得分:0)

reverse1-使用int反向-结果溢出- reverse2-使用长反向-没有结果溢出