思路:
- 引入TreeSet:通过集合快速找到所有出现的字符串;
- 引入ArrayList:为了快速排序,再通过StingBuilder生成排序后的字符串;
- 通过String api中的基本方法indexOf和lastIndexOf来计算TreeSet中每个字符串的最大值;
- 如果出现相同的,则把相同的都记录在一个列表中;
- 记录第一个出现次数最多的字符串(为了计算多个字符串相同情况);
- 计算最大字符串列表中哪些才是真正出现次数最多的。
import java.util.*;
public class MainJava{
public static void main(String[] args) throws Exception{
String input = "adfaegaeasgaegadgasegaaaaa";
System.out.println("the origin input is----"+ input);
new MainJava().doString(input);
}
public void doString(String input){
char[] chars = input.tocharArray();
ArrayList<String> lists = new ArrayList<>();
TreeSet<String> set = new TreeSet<>();
for(int i=0;i<chars.length;i++){
lists.add(String.valueOf(chars[i]));
set.add(String.valueOf(chars[i]));
}
System.out.println(set);
Collection.sort(lists);
System.out.println(lists);
StringBuilder stringBuider = new StringBuilder();
for(int i=0;i<lists.size();i++){
stringBuider.append(lists.get(i));
}
input = stringBuilder.toString();
System.out.println(input);
int max = 0;
String maxSting = "";
ArrayList<String> maxList = new ArrayList<String>();
Iterator it = set.iterator();
while(it.hasNext()){
String os = (String) it.next();
int begin = input.indexOf(os);
int end = Input.lastIndexOf(os);
int value = end - begin + 1;
if(value > max){
max = value;
maxString = os;
maxList.add(os);
}else if(value == max){
maxList.add(os);
}
}
int index = 0;
for(int i=0;i<maxList.size();i++){
if(maxList.get(i).equals(maxString)){
index = i;
break;
}
}
System.out.println("max data");
for(int i = index; i<maxList.size();i++){
System.out.println(maxList.get(i)+"");
}
System.out.println();
System.out.ptintln("max"+max);
}
}