我是否只是增加了扭转数字的复杂性?

Sar*_*ara 1 java algorithm reverse

public class HelloWorld{

 public static void main(String []args){

    int  orig=103, reverse=0, mod;
    int numOfDigits=0;
    int n = orig;

    while (n>0){
        n /= 10;
        numOfDigits++;
    }
    n = orig;
    while (n > 0){
        mod = n % 10;
        reverse = reverse + (int)(mod * java.lang.Math.pow(10, numOfDigits-1));
        numOfDigits--;
        n /= 10;
    }

System.out.println("Reversed is : " + reverse);
 }
Run Code Online (Sandbox Code Playgroud)

}

我知道reverse = reverse + (int)(mod * java.lang.Math.pow(10, numOfDigits-1));可以替换为reverse = mod + (reverse*10).

想知道我是否通过计算总位数和施加功率来增加简单程序的复杂性?

PS:请假设orig可以作为用户的输入,并且可以是任意数量的数字.我的硬编码仅用于实验.

Ste*_*n C 5

你没有增加复杂性...但你确实让它变慢了.表达式 pow(10, numOfDigits - 1)将大大慢于reverse = mod + (reverse * 10)

Math.pow由于浮点不精确,使用而不是整数乘法的计算也是不准确的.A double只有52位精度,相比之下只有63位long.在这个例子中,这可能不适用,但总的来说,它是值得警惕的