LeetCode每日一题 (61) 49. 字母异位词分组 (哈希+emplace_back)

Stella981
• 阅读 417

49. 字母异位词分组


LeetCode每日一题 (61) 49. 字母异位词分组 (哈希+emplace_back)


class Solution {
   
   
   
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
   
   
   
        map<string,int> position; //纪录同一类别的位置
        vector<vector<string>> result; //结果
        int len=0;

        for(int i=0;i<strs.size();i++){
   
   
   
            string temp=strs[i];
            sort(temp.begin(),temp.end());
            //判断position里面是否有位置信息,没有就需要新增一个[]
            if(position.count(temp)==0){
   
   
    
                vector<string> x;
                result.push_back(x);
                position[temp]=len;
                len++;
            }
            result[position[temp]].push_back(strs[i]);
        }
        return result;
    }
};

LeetCode每日一题 (61) 49. 字母异位词分组 (哈希+emplace_back)


c++开发中我们会经常用到插入操作对stl的各种容器进行操作,比如vector,map,set等。在引入右值引用,转移构造函数,转移复制运算符之前,通常使用push_back()向容器中加入一个右值元素(临时对象)时,首先会调用构造函数构造这个临时对象,然后需要调用拷贝构造函数将这个临时对象放入容器中。原来的临时变量释放。这样造成的问题就是临时变量申请资源的浪费。
引入了右值引用,转移构造函数后,push_back()右值时就会调用构造函数和转移构造函数,如果可以在插入的时候直接构造,就只需要构造一次即可。这就是c++11 新加的emplace_back

class Solution {
   
   
   
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
   
   
   
        unordered_map<string, vector<string>> mp;
        for (string& str: strs) {
   
   
   
            string key = str;
            sort(key.begin(), key.end());
            mp[key].emplace_back(str);
        }
        vector<vector<string>> ans;
        for (auto it = mp.begin(); it != mp.end(); ++it) {
   
   
   
            ans.emplace_back(it->second);
        }
        return ans;
    }
};

LeetCode每日一题 (61) 49. 字母异位词分组 (哈希+emplace_back)

本文同步分享在 博客“战 胜”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Docker系列之MySQL安装教程
Docker系列之MySQL安装教程!在这里插入图片描述(https://oscimg.oschina.net/oscnet/up290e6ea2ceb61c35d155a02d468e92e5.png)有了前面的基础教程Docker系列之常用命令操作手册(https://www.oschina.net/action/GoToLink?
Stella981 Stella981
3年前
LeetCode 58. 最后一个单词的长度 (java)
题目:https://leetcodecn.com/problems/lengthoflastword/submissions/(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fleetcodecn.com%2Fproblems%2Flengthoflastw
Stella981 Stella981
3年前
LeetCode 1192. Critical Connections in a Network
原题链接在这里:https://leetcode.com/problems/criticalconnectionsinanetwork/(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fleetcode.com%2Fproblems%2Fcriticalconnections
Easter79 Easter79
3年前
SpringCloud系列使用Netflix Eureka进行服务治理
1\.什么是微服务?“微服务”一词来自国外的一篇博文,网站:https://martinfowler.com/articles/microservices.html!在这里插入图片描述(https://oscimg.oschina.net/oscnet/up218abd49f6631ea133657e7d4e56c798.png)
Stella981 Stella981
3年前
LeetCode每日一题 (30) 501. 二叉搜索树中的众数
501\.二叉搜索树中的众数(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fleetcodecn.com%2Fproblems%2Ffindmodeinbinarysearchtree%2F)!在这里插入图片描述(https://oscimg
Stella981 Stella981
3年前
Leetcode 11
11\.盛水的容器left,right双指针,中等偏简单难度12\.整数转罗马数字(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fleetcodecn.com%2Fproblems%2Fintegertoroman%2F)贪心算法,罗马字母含特殊
Stella981 Stella981
3年前
LeetCode每日一题 (47)144. 二叉树的前序遍历
144\.二叉树的前序遍历(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fleetcodecn.com%2Fproblems%2Fbinarytreepreordertraversal%2F)!在这里插入图片描述(https://oscimg.o
Wesley13 Wesley13
3年前
IJCAI 2020上NLP方向华人学者论文发表情况
!在这里插入图片描述(https://oscimg.oschina.net/oscnet/upc96198758e9b106ac9acb7ac747c8b1e.jpg)AMiner平台(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.aminer.cn%2F%3Ff
Stella981 Stella981
3年前
49. Group Anagrams
Question49\.GroupAnagrams(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fleetcode.com%2Fproblems%2Fgroupanagrams%2Fdescription%2F)!(http://7xkmkl.com
Stella981 Stella981
3年前
Python数据分析与机器学习【01
源文件:!在这里插入图片描述(https://oscimg.oschina.net/oscnet/upe3c5ed81f738cacf30ebfcd10926b4d6.png)源文件下载(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fdownload.csdn.n