2 回答
TA贡献1872条经验 获得超3个赞
将增量移动到counter此处应该可以:
if (count > 1 && !words[i].equals("0")) {
counter++;
System.out.println(words[i]);
}
而不是在第二个循环中。counter每次您发现另一个重复项时,现在都会增加。counter仅当您发现存在重复单词时,向下移动才会增加它。
也就是说,可以通过使用Map来计算每个单词出现的次数来简化此方法。
TA贡献1811条经验 获得超4个赞
尝试使用 1 个HashMap而不是 2 个 for 循环,如下所示
public static void main(String[] args) {
String input = "Big black bug bit a big black dog on his big black nose";
HashMap<String, Integer> dupCount = new HashMap<>();
//Converts the string into lowercase
input = input.toLowerCase();
//Split the string into words using built-in function
String words[] = input.split(" ");
System.out.println("Duplicate words in a given string : ");
for(int i = 0; i < words.length; i++) {
if(dupCount.containsKey(words[i])){
int cnt = dupCount.get(words[i]);
cnt = cnt + 1;
dupCount.put(words[i], cnt);
}else{
dupCount.put(words[i], 0);
}
}
for(Map.Entry<String, Integer> test : dupCount.entrySet()){
if(test.getValue() > 1) {
System.out.println("Duplicate words in a given string : " +test.getKey() + " : " + test.getValue());
}
}
}
在这种情况下,每次出现重复时都会打印最后一条语句,您可以根据需要对其进行修改。
添加回答
举报