反向整数Leetcode-解释溢出问题

时间:2018-10-24 23:39:17

标签: java overflow

我是编码和练习leetcode问题的新手。整数反向问题讨论溢出。

我已经搜索了关于如何处理溢出的大部分讨论。有人可以解释一下这是什么溢出吗,为什么造成这种情况?

1 个答案:

答案 0 :(得分:1)

const currencyMap = { "$": "USD", "€": "EUR", }; const r = '$100'.replace(/[$€]/g, match => currencyMap[match]); console.log(r);Integer.MAX_VALUE
如果您将其取反,则会得到2147483647

该值显然超出了7463847412支持的范围。
如果计算相反,则会得到无声溢出。

int

如果您解析了反向字符串,则会获得解析异常。

int rev = 0;
for (int val = Integer.MAX_VALUE; val != 0; val /= 10)
    rev = rev * 10 + val % 10;
System.out.println(rev); // prints: -1126087180   <== Result of overflow

您还可以使用String revStr = new StringBuilder().append(Integer.MAX_VALUE).reverse().toString(); System.out.println(revStr); // prints: 7463847412 rev = Integer.parseInt(revStr); // throws: NumberFormatException: For input string: "7463847412" 的{​​{1}}方法来防止溢出:

xxxExact