Java 360笔试题 求字符串子串出现最多次数 2019.08.31
求字符串的所有子串
输入
.
输入 aba
子串
.
a ab aba ba a
出现次数最多的是 a 次数为2
输出:2
一般思想:先找子串,然后统计 算最大次数
代码
.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
show( s);
}
public static void show(String inputString) {
Map<String ,Integer> map= new HashMap<String, Integer>();
for(int i = 0; i < inputString.length(); i++) {
String tempstring=inputString.substring(i, i+1);
if(map.containsKey(tempstring)) {
map.put(tempstring, map.get(tempstring)+1);
}else{
map.put(tempstring,1);
}
}
Iterator<String> it=map.keySet().iterator();
int maxtemp=0;
while(it.hasNext()) {
String s=it.next();
maxtemp=Math.max(maxtemp, map.get(s));
}
System.out.println(maxtemp);
}
}
输出
.
输入: aba
输出: 2
改进算法:
如果一个子串出现次数最多,那这个子串一定是出现次数最多的字母
封装函数
.
public static void show( String str){
for(int i = 0; i < str.length(); i++){
for (int j = i+1; j<=str.length(); j++){
System.out.println(str.substring(i,j));
}
}
}
```**加粗样式**