這裏是a problem on LeetCode快照:NumberFormatException的對於輸入字符串: 「9646324351」
對於這個問題,他們提供您必須填寫這個框架代碼:
public int reverse(int x) {
}
當測試解決方案,它似乎提供了不合理的投入,不會讓我提交我的解決方案。錯誤是:
注意輸入是1534236469
。這適合於int
,因爲輸入,但是反轉版本9646324351
自然不會,因爲Java中的int
的最大正值是2147483647
。
這是LeetCode測試中的錯誤嗎?或者是有一些技巧我無法想象,神奇地讓我返回9646324351
,一個明顯超出範圍的值,從reverse
返回作爲int
?
這裏是我的代碼,但是代碼幾乎沒有關係,因爲返回類型(int
)由該問題固定的(所以由「整數」,他們真的是int
,不long
):
public int reverse(int x) {
String intString;
StringBuilder sb = new StringBuilder();
if(x < 0){
sb.append("-");
x = x * -1;
}
intString = Integer.toString(x);
for(int i = intString.length() - 1; i >= 0; i--){
sb.append(intString.charAt(i));
}
String resultString = sb.toString();
int result = Integer.parseInt(resultString);
return result;
}
這是太大。使用Long.parseLong – Eran