【问题标题】:LeetCode 7: Reverse Integer | why does it work with a long but not with an int?LeetCode 7:反转整数 |为什么它适用于 long 但不适用于 int?
【发布时间】:2022-07-30 03:47:48
【问题描述】:

我试图解决 LeetCode 上的 this 问题,您必须使用函数反转整数。约束是,如果反转的数字超出有符号的 32 位整数范围,即 (-2^31) 到 (2^31 - 1),则返回 0。当我将整数用于反转变量时,像这样

class Solution { 
        public int reverse(int x) {
            int rev = 0;
            while (x != 0) {
                rev = rev * 10 + x % 10;
                x /= 10;
            }

            if((rev > Integer.MAX_VALUE) || (rev < Integer.MIN_VALUE))
                return 0;

            return rev;
        }
}

IntelliJ IDEA 表明

Condition 'rev > Integer.MAX_VALUE' is always 'false'

但是,当我使用 long 而不是 int 时,问题得到解决,程序按您预期的方式运行。

class Solution {
        public int reverse(int x) {
            long rev = 0;
            while (x != 0) {
                rev = rev * 10 + x % 10;
                x /= 10;
            }

            if((rev > Integer.MAX_VALUE) || (rev < Integer.MIN_VALUE))
                return 0;

            return (int)rev;
        }
}

我想知道为什么会这样?

【问题讨论】:

  • 因为当revint 时,它实际上不能大于Integer.MAX_VALUE。其他条件也是不可能的。因为它是int。这就像要求一个大于最大可能值的值。或比最小可能值少一个值。使用long,其值可能大于最大可能的int 值。或小于可能的最小int 值。 long 是 64 位的。

标签: java integer reverse long-integer


【解决方案1】:

在第一个代码块中,rev 是一个整数。因此,它不可能大于Integer.MAX_VALUE - 整数的最大值。

对于long,其值可能大于最大可能的int 值。 Java int 是一个有符号的 32 位值。 Java long 是一个有符号的 64 位值。

【讨论】:

    【解决方案2】:

    对我来说这是可行的......

    class Solution {
        public int reverse(int x) {
            int mod = 0, rev = 0;
                while(x!=0){
                    if(rev < Integer.MIN_VALUE/10 || rev > Integer.MAX_VALUE/10){
                    return 0;
                    }
                mod = x%10;
                x = x/10;
                rev = rev*10 + mod;
                }
                return rev;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-05-07
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多