package ONE;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
scanner.nextLine();
String ss = scanner.nextLine();
scanner.close();
ArrayList<stringdata> lol = new ArrayList<>();
stringdata first = new stringdata();
lol.add(first);
for(int i=n;i<=ss.length();i++){
for(int j=0;j<=ss.length()-i;j++){
stringdata tmp = new stringdata();
tmp.aString = ss.substring(j, j+i);
for(int ii=0;ii<lol.size();ii++){
if (tmp.aString.equals(lol.get(ii).aString)) {
lol.get(ii).num++;
break;
}else {
tmp.num=1;
tmp.start=j;
}
if (ii==lol.size()-1) {
lol.add(tmp);
break;
}
}
}
}
stringdata max =lol.get(1);
for(int i=2;i<lol.size();i++){
if (lol.get(i).num>max.num) {
max=lol.get(i);
}else if(lol.get(i).num==max.num){
if (lol.get(i).aString.length()>max.aString.length()) {
max=lol.get(i);
}else if (lol.get(i).aString.length()==max.aString.length()) {
if (lol.get(i).start<max.start) {
max=lol.get(i);
}
}
}
}
System.out.println(max.aString);
}
}
class stringdata{
public String aString="";
public int num=0;
public int start=0;
}
蓝桥杯——字串统计
最新推荐文章于 2023-01-06 11:53:20 发布
本文介绍了一种用于找出输入字符串中出现次数最多且长度最长的重复子串的算法实现。该算法首先读取用户输入的字符串,然后通过两层循环遍历所有可能的子串组合,并使用一个自定义的数据结构来记录每个子串出现的次数及其首次出现的位置。最终,程序输出出现次数最多且在出现次数相同时长度最长的子串。
730

被折叠的 条评论
为什么被折叠?



