1
在用於反轉數字的java程序中,我做了兩種方法。扭轉數字的時間比較
首先數學:
找到10的最大功率小於或等於號。
將其與最右邊的數字相乘。
除以10.
重複直到數目的數目是使用的StringBuffer的內置方法反向並轉換回整數0
二。
令我驚訝的是,第二種方法雖然很短,但大量減慢。我認爲使用內置函數會更快。但結果表示否則,是否有這種觀察的原因。對於小數字(3位數字)和大數字(9位數字),結果相同。
這裏是我的Java代碼:
class RevNum
{
public static void main(String []args)
{
int n=987,n2=n;
long ft,st;
int s=0,r=0,p;
st=System.nanoTime();
while(n!=0)
{
p=(int)Math.pow(10,power(n));
r+= n%10*p;
n=n/10;
}
ft=System.nanoTime()-st;
System.out.println("the time taken is "+ft+" and reversed number is "+r);
st=System.nanoTime();
StringBuffer str=new StringBuffer(Integer.toString(n2));
n2= Integer.parseInt(new String(str.reverse()));
ft=System.nanoTime()-st;
System.out.println("the time taken is "+ft+" and reversed number is "+n2);
}
private static int power(int n)
{
int s=0;
while(n/10!=0)
{
++s;
n=n/10;
}
return s;
}
}
這個'Integer.toString(n2)'可能已經比你的循環需要更多的時間... – assylias
當然,將一個數字轉換爲一個字符串,反轉字符串並將其解析爲一個數字將會比僅僅一堆算術運算,至少對於合理大小的數字。 – Thomas
小數字呢。 –