1
0
Fork 0
mirror of https://gitlab.com/mfocko/LeetCode.git synced 2024-09-19 17:56:55 +02:00
LeetCode/rs/sort-characters-by-frequency.rs
Matej Focko 94c49118db
ci(rs): add pre-commit hook for ‹rustfmt›
Signed-off-by: Matej Focko <mfocko@redhat.com>
2024-02-21 23:28:35 +01:00

20 lines
592 B
Rust

use std::cmp::Reverse;
use std::collections::BTreeMap;
impl Solution {
pub fn frequency_sort(s: String) -> String {
let mut freqs: BTreeMap<_, usize> = BTreeMap::new();
s.as_str().chars().for_each(|c| {
let current = freqs.get(&c).unwrap_or(&0);
freqs.insert(c, 1 + current);
});
let mut frequencies: Vec<_> = freqs.iter().collect();
frequencies.sort_by_key(|&(_, count)| Reverse(count));
frequencies.iter().fold(String::new(), |s, (c, count)| {
s + &c.to_string().repeat(**count)
})
}
}