赛码:小红书推荐系统
忽略到输入的可能是子串包含关键字,会使得出现次数计算错误,修改为使用str.contains方法。
import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] str = null;
int i = 0;
// 注意 hasNext 和 hasNextLine 的区别
// while (in.hasNext()) { // 注意 while 处理多个 case
// str[i++] = in.next();
// }
String strs = in.nextLine();
str = strs.split(" ");
List<String> list = findHighFrequency(str,str.length);
list.forEach(item->System.out.println(item));
}
public static List<String> findHighFrequency(String[] str,int length){
Map<String,Integer> map = new HashMap<String,Integer>();
List<String> list = new ArrayList<>();
int max = 0;
for(int i = 0;i<length;i++){
if(map.containsKey(str[i])){
int count = map.get(str[i]);
map.put(str[i],++count);
if(count>max){
list.clear();
list.add(str[i]);
max = count;
}else if(count == max){
list.add(str[i]);
}
continue;
}
map.put(str[i],1);
}
Collections.sort(list); // Collections接口实现自动排序
return list;
}
}