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);
	}

}

上一篇:十大经典排序算法总结


下一篇:算法之排序