在这个程序中,我试图显示最长的连续数字(例如:输入: 1 1 1 2 2 2 2 3 3 3 3 3
,输出: 3 4 5
)
我的问题是如何只显示输出中最大的数字。在这个例子中 5
.
我们不允许使用数组,有没有其他方法来解决这个问题?
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int zahl = 0;
int anzahl = -1;
String maxString = "";
while (sc.hasNextInt()) {
int i = sc.nextInt();
if (anzahl == i | anzahl == -1) {
zahl++;
} else if(anzahl != i) {
maxString += zahl + "\n" ;
zahl = 1;
}
anzahl = i;
}
sc.close();
System.out.println(maxString + (zahl + 1));
}
3条答案
按热度按时间lkaoscv71#
只需创建一个变量来跟踪循环外的最大数,并在检测到新的子序列时和循环后更改它以检查最后一个子序列的长度:
印刷品
maxFreq=6
(数到4
s) 是的。对于此输入
Scanner sc = new Scanner("1 1 1 2 2 2 2 2 2 2");
密码打印出来了maxFreq=7
djp7away2#
这是我的想法:
字符串rekord实际上拥有当前记录,可以覆盖它。
(运行时间4ms)
gblwokeq3#
(我没有足够的代表发表评论)
除了亚历克斯写的,你还应该改变
else if(anzahl != i)
为了公正else
.