我在java「1234567」中有一個整數,我的程序在一組整數中找到中間數字,有沒有比下面的代碼更優化的方式?最近在java面試中問到。在Java中找到一個整數的中間數字
我所做的是先找到數字,第一,最後和中間索引號。然後再次找到中間數字迭代在相同的整數。請建議一些優化。
int a1 = 1234567;
int a = a1;
// calculate length
int noOfDigits = 0;
while(a!=0)
{
a = a/10;
noOfDigits++;
}
int first = 0;
int last = noOfDigits-1;
int middle = (first+last)/2;
boolean midExists = ((a1%2)==1);
System.out.println(" digits: "+a1);
System.out.println(" no of digits "+noOfDigits);
System.out.println(" first "+first);
System.out.println(" last " + last);
if(midExists)
{
System.out.println(" middle " + middle);
int i = last;
int middleDigit = 0;
a = a1;
while(i != middle)
{
a = (a/10);
middleDigit = (a%10);
i--;
}
System.out.println("middle digit: " + middleDigit);
}
else
System.out.println(" Mid not Exists.. ");
程序的輸出:
digits: 1234567
no of digits 7
first 0
last 6
middle 3
middle digit: 4
char/length?2-1? –
int numberOfDigits = String.valueOf(a1).length();而不是while循環 – rilent
我將轉換爲字符串並獲取字符串的中間一個。 – kism3t