我想在不使用Collection的情况下找到在字符串中重复次数最多的两个单词。
例如,对于输入字符串:
要知道是知道他们知道我们所知道的
最常出现的两个词是:“知道”(4次)和“至”(2次)。
我不想在这里使用Map。
我开始接受一个字符串并拆分它,但我迷失了如何继续。 下面给出了一个非常奇怪的答案。
String s1 = "to know is to know that they know what we know";
String[] words = s1.split("\\s");
for (int i = 0; i < words.length; i++) {
int count = 0;
for (int j = i + 1; j < words.length; j++) {
if (words[j].contains(words[i])) {
count++;
}
}
System.out.println(words[i]+" --->" + count);
}
答案 0 :(得分:-1)
你快到了。
从1开始count
以包含当前字词。
在第二个for循环的末尾,即你打印某个东西的部分,你必须把你刚才计算过的那个单词与当前的最大值进行比较。如果它更大,请用新计数替换当前最大值并存储您找到的新字符串。
if (count > cMax) {
cMax = count;
sMax = words[i];
}
在上文中,cMax
是您到目前为止为单词找到的最大计数,此值应使用0
进行初始化。 sMax
是将计数存储在cMax
中的单词,应使用""
初始化(空字符串)
最后你现在可以做到:
System.out.printf("%s ---> %d\n", sMax, cMax);