我想要计算一个字符串中每个字母出现的次数。目标是构建一个
假设我正在循环遍历来自字符串或输入文件的
下面是可以工作的代码。请容忍我,我非常新手 Rust:
我想知道在Rust中是否有一种惯用的方法来做这件事?惯用的意思是是否有一个标准库类型(例如Python的
HashMap<char,i32>
,其中键是字符串中的所有字符,值是出现的次数。假设我正在循环遍历来自字符串或输入文件的
char
值。对于每个char
,如果它尚未被遇到,则需要将其作为新键添加到HashMap
中,其值为1,但如果它以前已经被遇到,则需要增加该值。下面是可以工作的代码。请容忍我,我非常新手 Rust:
use std::collections::HashMap;
fn main() {
let mut letter_counts: HashMap<char,i32> = HashMap::new();
let input_string = "Hello, world!";
let char_vec: Vec<char> = input_string.to_lowercase().chars().collect();
for c in char_vec {
if let Some(x) = letter_counts.get_mut(&c) {
*x = *x + 1;
} else {
letter_counts.insert(c,1);
}
}
println!("{:?}",letter_counts);
}
我想知道在Rust中是否有一种惯用的方法来做这件事?惯用的意思是是否有一个标准库类型(例如Python的
defaultdict
)或HashMap上的方法(例如Java的HashMap.computeIfAbsent
),可以使这个算法比手工编码更简单、更清晰、更不容易出错?