📅  最后修改于: 2023-12-03 14:58:27.031000             🧑  作者: Mango
本题是门(GATE)计算机科学(CS)考试于2006年出现的第63题。本题要求编写一个程序,对给定的字符串进行词频统计,并输出结果。
本题要求编写一个程序,用于统计一个给定字符串中各个单词出现的次数,并输出结果。可假定输入的字符串仅包含大小写字母和空格,且单词之间只有一个空格。
为解决本题,我们需要经过以下几个步骤:
读入一个字符串;
将字符串拆分为单词;
统计每个单词在字符串中出现的次数;
输出结果。
其中,步骤2可以使用字符串分割操作来实现;步骤3可以使用哈希表(HashMap)来实现,将每个单词作为键(Key),单词出现的次数作为值(Value);步骤4可以输出哈希表中存储的结果。
import java.util.HashMap;
import java.util.Scanner;
public class WordCount {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
in.close();
String[] words = str.split("[ ]+");
HashMap<String, Integer> wordCount = new HashMap<>();
for (String word : words) {
if (!wordCount.containsKey(word)) {
wordCount.put(word, 1);
} else {
wordCount.put(word, wordCount.get(word) + 1);
}
}
for (String word : wordCount.keySet()) {
System.out.printf("%s: %d\n", word, wordCount.get(word));
}
}
}
输入:This is a test test string
输出:
This: 1
is: 1
a: 1
test: 2
string: 1