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函数,见两者的区别
posted @ 2020-12-14 19:13  sys_malloc  阅读(98)  评论(0)    收藏  举报
总访问: counter for blog 次