rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;
use std::cmp::Ordering;
use std::collections::HashMap;
struct Pair<'a> {
    word: &'a str,
    freq: usize,
}

impl Solution {
    fn top_k_frequent(words: Vec<String>, k: i32) -> Vec<String> {
        let mut hm: HashMap<&str, usize> = HashMap::new();
        let mut v: Vec<Pair> = vec![];
        for w in words.iter() {
            *hm.entry(&w).or_default() += 1;
        }
        for (word, freq) in hm {
            v.push(Pair { word, freq });
        }
        v.sort_unstable_by(|a, b| match b.freq.cmp(&a.freq) {
            Ordering::Equal => a.word.cmp(b.word),
            e => e,
        });
        v.iter()
            .take(k as usize)
            .map(|x| x.word.to_string())
            .collect()
    }
}

#[test]
fn test() {
    let words: Vec<String> = vec_string!["i", "love", "leetcode", "i", "love", "coding"];
    let res: Vec<String> = vec_string!["i", "love"];
    let k = 2;
    assert_eq!(Solution::top_k_frequent(words, k), res);
    let words: Vec<String> =
        vec_string!["the", "day", "is", "sunny", "the", "the", "the", "sunny", "is", "is"];
    let res: Vec<String> = vec_string!["the", "is", "sunny", "day"];
    let k = 4;
    assert_eq!(Solution::top_k_frequent(words, k), res);
}