蓝桥杯【JAVA】——字串统计(Map键值对)

1、题目:
在这里插入图片描述
2、程序代码:

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 get=new Scanner(System.in);
		int L=get.nextInt();//子串的长度
		String str=get.next();
		get.close();
		String max="";
		int count =0;//表示一种子串出现的次数
		Map<String, Integer> map=new HashMap<>();
		for(int i=L;i<=str.length();i++) {//长度大于等于L的子串
			for(int j=0;j<str.length()-i;j++) {
				String s1="";
				s1=str.substring(j, j+i);//从j位置,获取i长度的子串
				if(map.size()==0) {
					count=1;
					max=s1;
					map.put(s1, 1);
				}else {
					if(map.containsKey(s1)) {
						int g=map.get(s1);//获取hashmap集合中s1对应的值(个数)
						g++;
						map.put(s1, g);//返回更改后的键值,集合刷新
						if(g>count) {//输出子串出现次数最多的
							count=g;
							max=s1;
						}else if(g==count) {//如果有多个出现次数一样的子串,输出最长的
							if(s1.length()>max.length()) {
								max=s1;
							}
						}
					}else {
						map.put(s1, 1);
					}
				}
			}
		}
		System.out.println(max);
	}

}
发布了75 篇原创文章 · 获赞 52 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/WU2629409421perfect/article/details/88764290