我在Java中有一个整数"1234567",我的程序要在一组整数中找到中间数字,是否有比下面的代码更优化的方法?最近在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
int middle = last/2;
- vefthym