美文网首页
49. Group Anagrams

49. Group Anagrams

作者: Shiyi001 | 来源:发表于2016-10-16 18:20 被阅读0次

Given an array of strings, group anagrams together.

For example, given: <code>["eat", "tea", "tan", "ate", "nat", "bat"]</code>
Return:
<pre>
[
["ate", "eat","tea"],
["nat","tan"],
["bat"]
]
</pre>


解题思路

这道题是将字符串进行分类,如果所含的字母相同即为同一类字符串。
换句话说,如果同一类的字符串中的字符进行排序后,他们就是同一个字符串。

我们可以定义一个map<string, int>,每一个排序后的串对应他的类别。对于一个新串,如果他属于其中某个类,则将其加入;如果不属于任何有一个类,则开一个新类来存储。


代码

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        vector<vector<string>> res;
        vector<string> linner;
        map<string, int> mp;
        string copy;
        
        for (int i = 0; i < strs.size(); i++) {
            copy = strs[i];
            sort(copy.begin(), copy.end());
            if (mp.find(copy) == mp.end()) {
                //找不到所属的类别
                linner.clear();
                linner.push_back(strs[i]);
                mp[copy] = res.size();
                res.push_back(linner);
            } else {
                //存在所属的类别
                res[mp[copy]].push_back(strs[i]);
            }
        }
        
        return res;
    }
};

相关文章

网友评论

      本文标题:49. Group Anagrams

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