まとめ - ワードカウンター
CoddyのRustジャーニー「Logic & Flow」セクションの一部 — レッスン 34/66。
チャレンジ
簡単入力として1つの文章を受け取ります。その文章の中で各単語が何回出現するかをカウントし、そのカウントをハッシュマップに保存してください。その後、各ユニークな単語とそのカウントを出力してください。
要件:
std::collectionsからHashMapをインポートすることHashMap<String, i32>型のミュータブルなハッシュマップを作成すること- 入力された文章を1行として読み取ること
.split_whitespace()を使用して、文章を個々の単語に分割すること- 各単語について、
.entry()と.or_insert(0)を使用し、単語が存在しない場合はカウントを0に初期化すること .or_insert(0)を使用した後、その単語のカウントを1増やすこと- すべての単語を処理した後、ハッシュマップを反復処理し、各単語とそのカウントを
[word]: [count]の形式で出力すること
入力:
- 単語がスペースで区切られた文章を含む1行(例:
hello world hello rust world hello)
出力:
- 各ユニークな単語について、
[word]: [count]の形式で1行ずつ出力すること - 出力行の順序はテスト実行ごとに異なる場合があります
自分で試してみよう
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: 以下にコードを記述してください
// 文章を単語に分割し、各単語をカウントする
// 各単語とそのカウントを出力する
}