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