Java 不使用集合的字符串中最常重复出现的两个单词

Java 不使用集合的字符串中最常重复出现的两个单词,java,Java,我想找到字符串中重复次数最多的两个单词,而不使用集合 例如,对于输入字符串: 知道就是知道他们知道我们知道什么 经常出现的两个词是:“知道”(4次)和“去”(2次) 我不想在这里用地图 我从一根绳子开始,把它分开,但我不知道该怎么做。 下面给出了一个非常奇怪的答案 String s1 = "to know is to know that they know what we know"; String[] words = s1.split("\\s"); for (int i = 0; i

我想找到字符串中重复次数最多的两个单词,而不使用集合

例如,对于输入字符串:

知道就是知道他们知道我们知道什么

经常出现的两个词是:“知道”(4次)和“去”(2次)

我不想在这里用地图

我从一根绳子开始,把它分开,但我不知道该怎么做。 下面给出了一个非常奇怪的答案

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);
}
String s1=“知道就是知道他们知道我们知道什么”;
字符串[]字=s1.拆分(\\s”);
for(int i=0;i”+计数);
}
你就快到了

从1开始计数,以包括当前单词

在第二个for循环的末尾,即打印某物的部分,您必须将刚刚计数的单词与当前最大值进行比较。如果它更大,则用新计数替换当前最大值,并存储找到的新字符串

if (count > cMax) {
    cMax = count;
    sMax = words[i];
}
在上面的例子中,
cMax
是到目前为止您找到的单词的最大计数,这个值应该用
0
初始化
sMax
是将计数存储在
cMax
中的单词,应使用
(空字符串)对其进行初始化

最后,您现在可以执行以下操作:

System.out.printf("%s ---> %d\n", sMax, cMax);

我建议你试着自己写,如果你遇到了符合SO问题范围的具体问题,就把它们贴在这里。请阅读。允许使用HashMap吗?我更改了它。对Java非常陌生,第二个循环也应该从零开始
intj=0
否则它将跳过一个单词,并计算实际的计数-1@Yazan它不需要从零开始,但是
计数应该设置为1而不是零。我现在很难思考lol,但是它可以工作,假设每个单词都存在(至少)一次。@Yazan,如果找到这个单词,它至少存在一次。没有假设,这就是为什么
count
应该从1yup开始,正确的单词应该是
考虑到
没有假设,对不起英语不是我的第一语言