不使用Collection的字符串中两个最常见的单词

时间:2016-12-18 10:20:25

标签: java

我想在不使用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);
}

1 个答案:

答案 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);