use std::cmp; use std::collections::HashMap; impl Solution { fn get_freqs(s: &str) -> HashMap { let mut freqs = HashMap::new(); for c in s.chars() { *freqs.entry(c).or_insert(0) += 1; } freqs } pub fn frequency_sort(mut s: String) -> String { let mut freqs: Vec<(char, usize)> = Solution::get_freqs(&s).into_iter().collect(); freqs.sort_by_key(|(_, count)| cmp::Reverse(*count)); freqs.into_iter().fold(String::new(), |mut s, (c, n)| { for _ in 0..n { s.push(c); } s }) } }