java - 我需要获取一个字符串并输出该字符串中出现次数最多的单词

标签 java

我相信我有正确的代码,以便继续转到字符串中的下一个单词,但是,我真的很苦恼如何将最常用的单词添加到 maxW 中。我也对 maxCnt 感到困惑,我是否需要创建一个完整的单独循环才能返回 maxCnt?

我的教授提到使用 if 语句来比较 maxW 和 maxCnt,但老实说我不知道​​从哪里开始实现它。

String getMode() {
        String tmp = "";
        for(int i=0; i<s.length(); i++){
            if(s.charAt(i)>64 && s.charAt(i)<=122 || s.charAt(i)==32){
                tmp = tmp+s.charAt(i);
                s = tmp;
            }
        }
        String maxW = "";
        int maxCnt = 0;
        for(int i=0; i<s.length(); i++) {
            int p =s.indexOf(" ",i);
            int cnt = 1;
            String w = s.substring(i,p);
            i = p;
            for (int j=p+1; j<s.length(); j++) {
                int p1 = s.indexOf(" ",j);
                String w1 = s.substring(j,p1);
                if(w.equalsIgnoreCase(w1))
                    cnt++;
                j = p1;
                maxW = w+s.substring(j,p1);
            }

        }
        return maxW;
    }

我尝试过的所有操作都会导致字符串超出范围错误代码:

(字符串.java:1967) (Hw9.java:36) (Hw9.java:64)

这是结果应该是什么的示例:如果 s =“你比你相信的更勇敢,比你看起来更坚强,比你想象的更聪明。”,此方法将返回“You”。

预先感谢您的帮助!

最佳答案

如果您不能使用 map ,那么也许您可以使用两个并行列表。一种用于单词,一种用于计数。搜索字符串列表中的每个单词。如果找到它,请将其相应的计数列表条目增加 1。如果没有找到它,请将其添加到列表中并将相应的计数条目设置为 1。

完成列表构建后,找到最大计数的索引,并使用它来索引单词列表以获取最常出现的单词。

请记住,对于某些数据集(句子),可能存在多向联系。

关于java - 我需要获取一个字符串并输出该字符串中出现次数最多的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58757569/

相关文章:

java - 如何将自引用传递给 java 中的构造函数?

java - 使用纯 Java 代码打开/弹出 DVD

java - 数据库名称正则表达式限制

java - 部署 Spring MVC 应用程序时出现异常?

java - 使用 TestNG 时出现错误

java - (Android Studio Java) FAB OnClick 警报对话框使应用程序崩溃

java - 忽略关系中的 FetchType.EAGER

java - 让映射器在特定条件下不映射字段

java - 在 java 中使用对象数组

java - 动态加载类后向 junit 测试套件添加拆卸方法