use std::collections::HashMap;
fn second_most_frequent_char(s: &str) -> Option<char> {
let mut char_count = HashMap::new();
// Count the frequency of each character
for ch in s.chars() {
*char_count.entry(ch).or_insert(0) += 1;
}
// Create a vector from the hash map and sort by frequency
let mut count_vec: Vec<(&char, &i32)> = char_count.iter().collect();
count_vec.sort_by(|a, b| b.1.cmp(a.1));
// Get the second most frequent character
if count_vec.len() > 1 {
Some(*count_vec[1].0)
} else {
None
}
}
fn main() {
let s = "bbaddddccce";
match second_most_frequent_char(s) {
Some(c) => println!("The second most frequent character is '{}'", c),
None => println!("There is no second most frequent character"),
}
}
/*
run:
The second most frequent character is 'c'
*/