블 루 브리지 컵 자바 알고리즘 훈련 문자열 통계

알고리즘 트 레이 닝 문자열 통계
자원 제한 시간 제한: 1.0s 메모리 제한: 512.0MB 문 제 는 n 길이 의 문자열 S 를 지정 하고 숫자 L 도 있 습 니 다. 통계 길이 가 L 과 같은 횟수 가 가장 많은 하위 문자열 (서로 다른 등장 이 교차 할 수 있 음) 보다 크 면 여러 개, 출력 이 가장 긴 경우 여러 개가 있 으 면 출력 이 처음으로 나타 납 니 다.형식 첫 줄 의 숫자 L 을 입력 하 십시오.두 번 째 줄 은 문자열 S 입 니 다.L 은 0 보다 크 고 S 의 길 이 를 초과 하지 않 습 니 다.출력 형식 한 줄, 제목 이 요구 하 는 문자열.
입력 샘플 1: 4 bbaabbaaaaa
출력 샘플 1: bbaa
입력 샘플 2: 2 bbaabbaaaaa
출력 사례 2: aa 데이터 규모 와 약정 n < = 60 S 의 모든 문 자 는 소문 자 입 니 다.가능 한 모든 하위 문자열 을 제시 하고 발생 횟수 를 통계 하 며 조건 에 맞 는 것 을 찾 습 니 다.
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
 
public class Main {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int i, j, count;
		
		int l = in.nextInt();
		ArrayList sum = new ArrayList<>();	//       
		String s = in.next();
		int len = s.length();
		sum.add(s);
		//     
		for (i = len - 1; i >= l; i--) {	//       
			for (j = 0; j <= len - i; j++) {	//     
				sum.add(s.substring(j, j+i));
			}
		}
		
		//       
		int max = 0;
		Map result = new HashMap();	//        
		for (i = 0; i < sum.size(); i++) {
			count = 0;
			for (j = 0; j < sum.size(); j++) {
				if (sum.get(j).equals(sum.get(i))) count++;
			}
			if (!result.containsKey(count)) {	//             
				result.put(count, sum.get(i));
				if (count > max) max = count;	//       
			}
		}
		System.out.println(result.get(max));
	}
 
}

좋은 웹페이지 즐겨찾기