[英]Handle overflow for reverse integer
它實際上與Reverse Integer leetcode問題有些相關——如何處理溢出,反轉整數的數字,同時在反轉整數溢出時返回 0。
所以它應該是:
輸入:-123,返回:-321
輸入:1500032455,返回:0
我可以反轉正常情況下的數字,但不能反轉溢出情況,我查看了上面的鏈接,我的有點笨重..但我想它應該可以正常工作嗎? 有人可以建議嗎?
public int reverse(int x) {
boolean isPositive = true;
if (x < 0){
isPositive = false;
x = x * -1;
}
int length = String.valueOf(x).length();
int[] digit = new int[length];
for (int i = 0; i < length; i++){
digit[i] = x % 10;
x = x / 10;
}
int solution = 0;
for (int j = 0; j < length; j++){
solution = solution + digit[length-j-1] * (int) Math.pow(10,j);
}
if (solution > Integer.MAX_VALUE){
return 0;
}
return (isPositive == false) ? -solution : solution;
}
}
我認為有一種更簡單的方法可以做到這一點。 嘗試 :
int reverse(int num)
{
char[] number = String.valueOf(num > 0 ? num : -num).toCharArray();
for(int i=0; i< number.length/2;i++)
{
char temp = number[i];
number[i] = number[n-i];
number[n-i] = temp;
}
BigInteger Num = new BigInteger(new String(number));
if(Num.compair(BigInteger.valueOf(Integer.MAX_INTEGER)) >= 0) return 0; // Or throw an Exception.
else return Integer.praseInt(new String(number)) * (num >0 ? 1 : -1);
}
通過簡單地替換函數的返回類型並更改最后一個 if 語句,您可以使用它來反轉大於 Integr.MAX_INTIGER 的數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.