最直观解法:
use std::io;
fn main() {
let mut s = String::new();
io::stdin().read_line(&mut s).expect("Failed to read line");
let mut v = vec![0u32; 4];
for &i in s.trim().as_bytes() {
match i {
32 => v[1] += 1,
65..=90 | 97..=122 => v[0] += 1,
48..=57 => v[2] += 1,
_ => v[3] += 1,
}
}
for &i in v.iter() {
println!("{}", i);
}
}
我相信可以用链式写法一步到位,让我想想。