[leetcode]49.字母异位词分组

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:

输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
输出:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]

思路:
1.建立hashmap,键为string类,值为res类。
2.遍历strs数组,对其中每一个字符串,对字符按照字典顺序从小到大排序,保存在临时变量temp中。
3.判断map中是否已经存在temp,如果存在,将str压入对应的数组中,如果不存在,新建一个数组,保存str,存入map中。

AC代码:(C++)

class Solution {
   public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        vector<vector<string>> ans;
        int count = 0, size = strs.size();
        string temp;
        unordered_map<string, int> mp;
        for (int i = 0; i < size; i++) {
            string str = strs[i];
            temp = str;
            sort(temp.begin(), temp.end());
            if (mp.find(temp) != mp.end()) {  //已经存在
                ans[mp[temp]].push_back(str);
            } else {                         //不存在
                vector<string> vec(1, str);  //建立新数组
                ans.push_back(vec);
                 mp[temp] = count++;  //更新下标
            }
        }
        return ans;
    }
};

你可能感兴趣的:(LeetCode)