📜  门| GATE-CS-2006 |第 63 题(1)

📅  最后修改于: 2023-12-03 14:58:27.031000             🧑  作者: Mango

题目简介

本题是门(GATE)计算机科学(CS)考试于2006年出现的第63题。本题要求编写一个程序,对给定的字符串进行词频统计,并输出结果。

题目详情

本题要求编写一个程序,用于统计一个给定字符串中各个单词出现的次数,并输出结果。可假定输入的字符串仅包含大小写字母和空格,且单词之间只有一个空格。

思路分析

为解决本题,我们需要经过以下几个步骤:

  1. 读入一个字符串;

  2. 将字符串拆分为单词;

  3. 统计每个单词在字符串中出现的次数;

  4. 输出结果。

其中,步骤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