蓝桥杯【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);
}
}