我在
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