mirror of
https://gitlab.com/mfocko/LeetCode.git
synced 2024-11-09 15:59:06 +01:00
problems(rs): add „451. Sort Characters By Frequency“
Signed-off-by: Matej Focko <mfocko@redhat.com>
This commit is contained in:
parent
5d51c78a08
commit
63dad4c93c
1 changed files with 18 additions and 0 deletions
18
problems/sort-characters-by-frequency.rs
Normal file
18
problems/sort-characters-by-frequency.rs
Normal file
|
@ -0,0 +1,18 @@
|
|||
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))
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue