给定一串字符串,将字母组合在一起。

来源:互联网 发布:日语红宝书蓝宝书知乎 编辑:程序博客网 时间:2024/05/17 21:43

本题源自leetcode

--------------------------------------------------

例如::["eat", "tea", "tan", "ate", "nat", "bat"],

返回:[ ["ate", "eat","tea"],["nat","tan"], ["bat"] ]


思路:

1 用一个map做映射,map<string,multiset<string>>  用 set 可以包含重复的还有序。遍历数组把每一个字符串排序,然后按排序的字符串为键,源字符串为值存入map,

2 最后遍历map  所有有相同字符的串都在一个set中

代码:

 vector<vector<string>> groupAnagrams(vector<string>& strs) {        vector<vector<string>> result;        map<string,multiset<string>> mp;        for(int i=0;i<strs.size();i++){            string t=strs[i];            sort(t.begin(),t.end());            mp[t].insert(strs[i]);        }        for(auto m:mp){            vector<string> tmp(m.second.begin(),m.second.end());            result.push_back(tmp);        }        return result;    }



阅读全文
0 0
原创粉丝点击