如何在java中反转long值并处理溢出的情况?

时间:2016-07-15 16:59:41

标签: algorithm data-structures

我被要求在不使用任何其他类型(如BigInteger,String等)的情况下反转长值,以便在反转时保持值。在计算结果时,我只允许在长存储器的最大内存中使用长变量作为额外的临时变量。我认为在反转长值时处理“溢出”情况有困难。

我在网上搜索了这个特定的问题,通过这个链接:Java reverse an int value without using array将类似的解决方案应用于整数,但我找到了解决方案,他们使用其他数据类型来保存结果值。例如,要反转int,long用于携带结果,但是如果你被迫只使用int来携带结果呢?而且我很惊讶没有人在不使用其他类型的情况下解决了这个问题。我也想知道是否可以这样做?请提供您的意见。

功能如下:

public int reverseLong(long value){

int sign =1;
long result=0; //to hold result

if(value < 0){
    value =-value;
    sign = -1;
}
while(value !=0){       
    result = result*10+value%10;
    value = value/10;   

    if(){ //could be a check on 'result' for overflow case
        throw new NumberFormatException();
    }
}

return sign*result;
}

1 个答案:

答案 0 :(得分:2)

正如@qwertyman在评论中提到的那样。这个解决方案很好。

{{1}}