Java 不使用集合的字符串中最常重复出现的两个单词
我想找到字符串中重复次数最多的两个单词,而不使用集合 例如,对于输入字符串: 知道就是知道他们知道我们知道什么 经常出现的两个词是:“知道”(4次)和“去”(2次) 我不想在这里用地图 我从一根绳子开始,把它分开,但我不知道该怎么做。 下面给出了一个非常奇怪的答案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
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开始,正确的单词应该是考虑到没有假设,对不起英语不是我的第一语言