7-2 java高级 22_05找出有相同数字的最长子序列 (20 分)
作者:互联网
编写一个时间复杂度为O(n)的程序,提示用户输入一个以0结束的整数序列,找出有相同数字的最长子序列
输入格式:
用户输入一个以0结束的整数序列。
输出格式:
找出有相同数字的最长子序列。
输入样例:
在这里给出一组输入。例如:
2 4 4 8 8 8 8 2 4 4 0
输出样例:
在这里给出相应的输出。例如:
index 3 with 4 values of 8
题目分析
这道题其实蛮简单的,因为他要求的是最大连续相同子串,因此只需要逐个遍历下去,判断当前数字和前一个数字是否相同就可以了,每次不相同的时候,判断一下当前字串长度和目前的最大字串,如果当前大就替换,这样就over了
题解
// package lab04;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
int maxlen=0;
int maxindex=0;
int maxnum=0;
int prelen=0;
int preindex=0;
int prenum=0;
int index=0;
while (1+1==2) {
int x=input.nextInt();
if (x==0) {
if (prelen>maxlen) {
maxindex=preindex;
maxlen=prelen;
maxnum=prenum;
}
break;
}
if (x==prenum) {
prelen++;
}else {
if (prelen>maxlen) {
maxindex=preindex;
maxlen=prelen;
maxnum=prenum;
}
preindex=index;
prelen=1;
prenum=x;
}
index++;
}
System.out.print("index "+maxindex+" with "+maxlen+" values of "+maxnum);
}
}
标签:index,java,22,05,int,prenum,maxlen,prelen,preindex 来源: https://blog.csdn.net/tangkcc/article/details/120936446