我相信我有正确的代码,以便继续转到字符串中的下一个单词,但是,我真的很苦恼如何将最常用的单词添加到 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/