举例输入:
abc abc de de de fghi fghi
应该返回:
de
代码:
static List<String> func(String str) { String[] parts = str.split(" "); Map<String, Integer> map = new HashMap<String, Integer>(); int len = parts.length; for (int i = 0; i < len; i++) { if (!map.containsKey(parts[i])) { map.put(parts[i], 1); } else { map.put(parts[i], map.get(parts[i]) + 1); } } int maxValue = 0; for (String key : map.keySet()) { if (map.get(key) > maxValue) { maxValue = map.get(key); } } List<String> list = new LinkedList<String>(); for (String key : map.keySet()) { if (map.get(key) == maxValue) { list.add(key); } } return list; }
这里使用了HashMap这种数据结构。我认为它比较适合这道题目,因为Map能将每个字符串与其出现次数绑定在一起,而且Map的Key是没有重复的。
后来通过maxValue记录最大值的方式,遍历了一遍HashMap得出了字符串出现的最大次数。