rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

use std::collections::HashMap;

impl Solution {
    fn find_words(words: Vec<String>) -> Vec<String> {
        let rows: Vec<String> = [
            "qwertyuiopQWERTYUIOP",
            "asdfghjklASDFGHJKL",
            "zxcvbnmZXCVBNM",
        ]
        .iter()
        .map(|v| (*v).to_string())
        .collect();
        let mut hm: HashMap<char, usize> = HashMap::new();
        for i in 0..3 {
            let row = &rows[i];
            for c in row.chars() {
                hm.insert(c, i);
            }
        }
        let mut res: Vec<String> = vec![];
        for word in words {
            let rows: Vec<usize> = word.chars().map(|c| *hm.get(&c).unwrap()).collect();
            if rows.windows(2).all(|w| w[0] == w[1]) {
                res.push(word);
            }
        }
        res
    }
}

#[test]
fn test() {
    let words: Vec<String> = vec_string!["Hello", "Alaska", "Dad", "Peace"];
    let res: Vec<String> = vec_string!["Alaska", "Dad"];
    assert_eq!(Solution::find_words(words), res);
}