水王
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,
传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。
坊间风闻该“水王”发帖数目超过了帖子数目的一半。
如果你有一张当前论坛的帖子(包括回帖)列表,
其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
思路:从题干我们可以看到一个重要的信息,水王发帖超过一半,由此可以展开思考。
水王超过一半,那么假设有十个帖子,那么水王贴必定大于等于6,那么我们只要得到结果,
知晓谁是水王,那么我们可以使用删除法,进行一一比较法,相同则保留记录,相异则删除。
private static HashMap<String, Integer> map; public static HashMap<String, Integer> mostEle(String[] strArray) { map = new HashMap<String, Integer>(); String str = ""; int count = 0; int result = 0; for (int i = 0; i < strArray.length; i++) str += strArray[i]; for (int i = 0; i < strArray.length; i++) { String temp = str.replaceAll(strArray[i], ""); count = (str.length() - temp.length()) / strArray[i].length(); if (count > result) { map.clear(); map.put(strArray[i], count); result = count; } else if (count == result) map.put(strArray[i], count); } return map; } public static void main(String args[]) { String[] strArray = { "11", "11", "2", "2", "4", "5", "4" ,"4"}; HashMap<String, Integer> result = mostEle(strArray); ArrayList<Integer> c = new ArrayList<Integer>(result.values()); Set<String> s = result.keySet(); System.out.print("一共有" + result.size() + "元素最多。它们分别是"); System.out.print(s); System.out.println(",分别出现了" + c.get(0) + "次。"); }