Menu
CoddyTech

回顾:单词计数器

本课属于 Coddy Rust 学习旅程的“逻辑与流程”单元。第 34 课,共 66 课。

challenge icon

挑战

简单

你会收到一个句子作为输入。统计句子中每个单词出现的次数,并将计数存储在哈希映射中。然后打印每个不重复的单词及其计数。

要求:

  • 从 std::collections 导入 HashMap
  • 创建一个类型为 HashMap<String, i32> 的可变哈希映射
  • 将输入句子作为一整行读取
  • 使用 .split_whitespace() 将句子拆分为单个单词
  • 对于每个单词,使用 .entry() 和 .or_insert(0),如果该单词不存在,则将计数初始化为 0
  • 使用 .or_insert(0) 后,将该单词的计数加 1
  • 处理完所有单词后,遍历哈希映射,并按以下格式打印每个单词及其计数:[word]: [count]

输入:

  • 一行句子,单词之间用空格分隔(例如,hello world hello rust world hello)

输出:

  • 每个不重复的单词占一行,格式为:[word]: [count]
  • 不同测试运行中的输出行顺序可能不同

亲手试试

use std::collections::HashMap;
use std::io;

fn main() {
    // 读取输入的句子
    let mut sentence = String::new();
    io::stdin().read_line(&mut sentence).expect("Failed to read line");
    let sentence = sentence.trim();
    
    // 创建一个可变的哈希映射,存储每个单词的出现次数
    let mut word_count: HashMap<String, i32> = HashMap::new();
    
    // TODO: 在下面编写你的代码
    // 将句子拆分成单词,并统计每个单词的出现次数
    
    
    // 打印每个单词及其出现次数
    
}

逻辑与流程中的所有课

自己练习: Rust 在线编译器