【每日一题】【map、数组、二维数组排序、静态函数和库函数】2022年2月24日-NC97 字符串出现次数的TopK问题
描述
给定一个字符串数组,再给定整数 k ,请返回出现次数前k名的字符串和对应的次数。
返回的答案应该按字符串出现频率由高到低排序。如果不同的字符串有相同出现频率,按字典序排序。
对于两个字符串,大小关系取决于两个字符串从左到右第一个不同字符的 ASCII 值的大小关系。
比如"ah1x"小于"ahb","231"<”32“
字符仅包含数字和字母
答案:
public String[][] topKstrings (String[] strings, int k) { Map<String, Integer> map = new HashMap<>(); for (int i = 0; i < strings.length; i++) { if (!map.keySet().contains(strings[i])) { map.put(strings[i], 1); } else { int v = map.get(strings[i]); map.put(strings[i], v + 1); } } String[][] strDim = new String[map.size()][2]; int index = 0; for (String key : map.keySet()) { strDim[index++] = new String[]{key, String.valueOf(map.get(key))}; } Arrays.sort(strDim, new Comparator<String[]>() { public int compare(String[] s1, String[] s2) { if (!s1[1].equals(s2[1])) { return Integer.parseInt(s2[1]) - Integer.parseInt(s1[1]); } else { return s1[0].compareTo(s2[0]); } } }); return Arrays.copyOfRange(strDim, 0, k); }
本文来自博客园,作者:哥们要飞,转载请注明原文链接:https://www.cnblogs.com/liujinhui/p/15930292.html
分类:
算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix