我是编码和练习leetcode问题的新手。整数反向问题讨论溢出。
我已经搜索了关于如何处理溢出的大部分讨论。有人可以解释一下这是什么溢出吗,为什么造成这种情况?
答案 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