zoukankan      html  css  js  c++  java
  • 2020-12-14 字母异位词分组

    题目


    解决方法:排序+哈希表

    对字符串排序来判断两个字符串是否位字母异位词,使用哈希表来存储每一组字母异位词,哈希表的键位一组字母异位词的标志(一组词排序后的字符串),哈希表的值为一组字母异位词的列表。

    class Solution {
    public:
        vector<vector<string>> groupAnagrams(vector<string>& strs) {
            unordered_map<string, vector<string>> imap;
            for (string &str:strs) {
                string key = str;
                sort(key.begin(), key.end());
                imap[key].emplace_back(str);    // 根据标志将字符串放入响应列表
            }
            vector<vector<string>> ans;
            for (auto it = imap.begin(); it != imap.end(); ++it) {
                ans.emplace_back(it->second);
            }
    
            return ans;
        }
    
    };
    

    提交结果


    总结

    • 对于本题,在选择map的时候注意使用unordered_map而不是map,两者的底层实现不同,因此执行某些操作的效率也不用,详情见博客
    • 在代码中,向vector中添加数据时使用的是emplace_back函数,而不是push_back函数,见两者的区别
    CS专业在读,热爱编程。
    专业之外,喜欢阅读,尤爱哲学、金庸、马尔克斯。
  • 相关阅读:
    21天搞定聊天机器人之{命名实体识别}
    e到底是什么?
    An example of using Pandas for regression
    Time-Series Analysis
    Multiple Regression
    Regression Analysis Using Excel
    Correlation and Regression
    Hypothesis Testing
    Sampling and Estimation
    Common Probability Distributions
  • 原文地址:https://www.cnblogs.com/jmhwsrr/p/14135085.html
Copyright © 2011-2022 走看看