水王

 

三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,

传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他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) + "次。");  
        }  

 

posted @ 2019-06-01 20:01  至尊小虾米  阅读(198)  评论(0编辑  收藏  举报