import java.util.*; import java.util.stream.Collectors; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String str = in.nextLine(); String[] strs = str.split(" "); // 我们认为当一个单词出现的次数不少于3次时,该单词为“用户期望搜索的单词”,即称为关键词。请你根据小红的记录,输出小红的用户画像对应的所有关键词。 // 每行输入一个。你需要按照搜索频次从高到低输出。频次相同的,你需要按字典序升序输出。 HashMap<String,Integer> map = new HashMap<>(); for(String s : strs){ if(map.containsKey(s)){ map.put(s, map.get(s) + 1); }else{ map.put(s, 1); } } // 流式编程 List<Map.Entry<String, Integer>> keywords = map.entrySet().stream() .filter((entry -> entry.getValue() >= 3)) .sorted((a, b) -> { if(!a.getValue().equals(b.getValue())){ return b.getValue() - a.getValue(); } return a.getKey().compareTo(b.getKey()); }) .collect(Collectors.toList()); for(Map.Entry<String, Integer> entry : keywords){ System.out.println(entry.getKey()); } } public static void mergeSort(int[] arr){ if(arr.length <= 1){ return; } int mid = arr.length / 2; int[] left = Arrays.copyOfRange(arr, 0, mid); int[] right = Arrays.copyOfRange(arr, mid, arr.length); mergeSort(left); mergeSort(right); merge(arr, left, right); } public static void merge(int[] result, int[] left, int[] right){ int i = 0; int j = 0; int k = 0; while(i < left.length && j < right.length){ if(left[i] > right[j]){ result[k++] = left[i++]; }else{ result[k++] = right[j++]; } } while(i < left.length){ result[k++] = left[i++]; } while(j < right.length){ result[k++] = right[j++]; } } }