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可以作为用户的输入,并且可以是任意数量的数字.我的硬编码仅用于实验.
你没有增加复杂性...但你确实让它变慢了.表达式 pow(10, numOfDigits - 1)将大大慢于reverse = mod + (reverse * 10)
Math.pow由于浮点不精确,使用而不是整数乘法的计算也是不准确的.A double只有52位精度,相比之下只有63位long.在这个例子中,这可能不适用,但总的来说,它是值得警惕的