给定字符串中出现次数最多的单词

时间:2019-04-14 11:51:58

标签: java

我正在尝试查找给定字符串中出现次数最多的单词。我的方法是,当我直接获取一个字符串数组,但是当我获取String并将其转换为字符串数组时,它无法正常工作。请帮助我找出我的逻辑错误。

我用HashMap解决了这个问题。

import java.util.*;


    public class FindingmostOccurrencewordsinGivenString {
        static String OccurreneceofWords(String [] arr)
        {
            HashMap<String,Integer> hs=new HashMap<String,Integer>();

            for(int i=0;i<arr.length;i++)
            {
                if(hs.containsKey(arr[i]))

                hs.put(arr[i],  hs.get(arr[i])+1);
                else

                    hs.put(arr[i], 1);

            }

            Set<Map.Entry<String, Integer>>set=hs.entrySet();
            Integer value=0;
            String key="";
             for(Map.Entry<String, Integer>m:set) 
            {
                if(m.getValue() > value)
                {
                    value=m.getValue();
                    key=m.getKey();
                }
            }
             return key;
        }

        public static void main(String[]args)
        {
            Scanner sc=new Scanner(System.in);
            String str=sc.next();
            String str1[]=str.split("\\s+");
             String arr[] = {  "hey","hi","hi","hello","hi" };//hi
            System.out.println(OccurreneceofWords(str1));




        }
    }

预期输出:hi

时打印为true
String arr[] = {  "hey","hi","hi","hello","hi" };//hi as input.

但是当以String形式输入并将其拆分为字符串数组时,我没有得到正确的输出,即hi。

1 个答案:

答案 0 :(得分:1)

我执行了您的代码,您的逻辑是正确的,但使用会出现单个错误

String str=sc.next();

哪个仅读取字符串中的第一个令牌,即“嘿”,而不是您应该使用。`

String str=sc.nextLine();