gpt4 book ai didi

java - 在Java中查找整数中的中间数字

转载 作者:搜寻专家 更新时间:2023-11-01 01:01:01 24 4
gpt4 key购买 nike

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

最佳答案

您也可以一次完成此操作。想法是首先将 integer 存储在另一个变量中。然后在一个 integer 中向左移动两位数,而在另一个中只向左移动一位数。

int a1 = 1234567;  
int a2 = a1;
int flag=0;

while(a2>0)
{
a2/=10; //Moves to the left by one digit
if(a2==0) //If there are odd no. of digits
{
flag=1;
break;
}
a2/=10; //Moves to the left by one digit
a1/=10; //Moves to the left by one digit
}
System.out.print(flag!=1?"No Mid Exists":a1%10);

关于java - 在Java中查找整数中的中间数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43798783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com