我被要求在不使用任何其他类型(如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;
}
答案 0 :(得分:2)
正如@qwertyman在评论中提到的那样。这个解决方案很好。
{{1}}