题目描述


public class Main {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int L = reader.nextInt();
String S = reader.next();
LinkedHashMap<String, Integer> memo = new LinkedHashMap<>();
for (; L <= S.length(); L++) {
for (int i = 0; i <= S.length() - L; i++) {
String x = S.substring(i, i + L);
int frep = memo.getOrDefault(x, 0);
memo.put(x, frep + 1);
}
}
int maxFreq = Integer.MIN_VALUE;
for (String in : memo.keySet()) {
if (memo.get(in) > maxFreq) {
maxFreq = memo.get(in);
}
}
Iterator<Map.Entry<String, Integer>> iterator = memo.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Integer> m = iterator.next();
if (m.getValue()< maxFreq) {
iterator.remove();
}
}
int memoSize = memo.size();
String[] res = new String[memoSize];
int k = 0;
int maxLength = Integer.MIN_VALUE;
for (Map.Entry<String, Integer> entry : memo.entrySet()) {
if(entry.getKey().length()>maxLength) {
maxLength=entry.getKey().length();
}
res[k] = entry.getKey();
k++;
}
if (memoSize == 1) {
System.out.println(res[0]);
return;
}
int resIndex = 0;
for (int i = 0; i < memoSize; i++) {
if (res[i].length() == maxLength) {
resIndex = i;
break;
}
}
System.out.println(res[resIndex]);
}