美文网首页
LeetCode 字母异位词分组 Rust

LeetCode 字母异位词分组 Rust

作者: liaozhiyuan | 来源:发表于2019-10-14 00:13 被阅读0次

    LeetCode 字母异位词分组 Rust

    题目

    给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

    • 该题考察了Rust中的HashMap用法,在Rust中HashMap的典型使用方式是基于entry()和or_default(),or_insert等API来进行类描述性的字典处理。这样可以避免冗余的 if key exist { get value }else{ insert }这样的操作。

    • 在对vec的迭代中,使用了map的方式,使用闭包构建了HashMap的key值。Rust支持基于map的表达形式在表述数据的处理过程上,会比for i in xx.iter()方式更简练。

    • Vec::from_iter的使用,可以简化Vector的构建过程。需要引入FromIterator trait

    #![allow(unused_must_use)]
    use std::collections::HashMap;
    use std::iter::FromIterator;
    struct Solution;
    
    impl Solution {
        pub fn group_anagrams(strs: Vec<String>) -> Vec<Vec<String>> {
            let mut words = HashMap::new();
            strs.iter()
                .map(|word| {
                    let mut k = Vec::from_iter(word.bytes());
                    k.sort();
                    words
                        .entry(k)
                        .and_modify(|e: &mut Vec<String>| e.push(word.to_string()))
                        .or_insert(vec![word.to_string()]);
                })
                .collect::<()>();
            return words.into_iter().map(|(_,v)|v).collect();
        }
    }
    

    相关文章

      网友评论

          本文标题:LeetCode 字母异位词分组 Rust

          本文链接:https://www.haomeiwen.com/subject/fyclmctx.html