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

  1. 输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
  2. 输出:
  3. [
  4. ["ate","eat","tea"],
  5. ["nat","tan"],
  6. ["bat"]
  7. ]

c plus


  • 排序法
  • `//把每个单词排序,然后将排序后单词当成KEY放入哈希中, 哈希碰撞的即是结果
    class Solution {
    public:
    vector> groupAnagrams(vector& strs) {
    unordered_map> mp;
    for (string s : strs) {
    string tmp = s;
    sort(tmp.begin(), tmp.end());
    mp[tmp].push_back(s);
    }
    vector> ret;
    for (auto s : mp) {
    ret.push_back(s.second);
    }
    return ret;
    }
    }; ```

` %E7%BB%99%E5%AE%9A%E4%B8%80%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0%E7%BB%84%EF%BC%8C%E5%B0%86%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D%E7%BB%84%E5%90%88%E5%9C%A8%E4%B8%80%E8%B5%B7%E3%80%82%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D%E6%8C%87%E5%AD%97%E6%AF%8D%E7%9B%B8%E5%90%8C%EF%BC%8C%E4%BD%86%E6%8E%92%E5%88%97%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E3%80%82%0A%60%60%60%0A%E8%BE%93%E5%85%A5%3A%20%5B%22eat%22%2C%20%22tea%22%2C%20%22tan%22%2C%20%22ate%22%2C%20%22nat%22%2C%20%22bat%22%5D%0A%E8%BE%93%E5%87%BA%3A%0A%5B%0A%20%20%5B%22ate%22%2C%22eat%22%2C%22tea%22%5D%2C%0A%20%20%5B%22nat%22%2C%22tan%22%5D%2C%0A%20%20%5B%22bat%22%5D%0A%5D%0A%60%60%60%0A%0A%23%23%23%20c%20plus%0A%0A%0A%20%E6%8E%92%E5%BA%8F%E6%B3%95%0A%20%60%60%60c%0A%2F%2F%E6%8A%8A%E6%AF%8F%E4%B8%AA%E5%8D%95%E8%AF%8D%E6%8E%92%E5%BA%8F%EF%BC%8C%E7%84%B6%E5%90%8E%E5%B0%86%E6%8E%92%E5%BA%8F%E5%90%8E%E5%8D%95%E8%AF%8D%E5%BD%93%E6%88%90KEY%E6%94%BE%E5%85%A5%E5%93%88%E5%B8%8C%E4%B8%AD%EF%BC%8C%20%E5%93%88%E5%B8%8C%E7%A2%B0%E6%92%9E%E7%9A%84%E5%8D%B3%E6%98%AF%E7%BB%93%E6%9E%9C%0Aclass%20Solution%20%7B%0Apublic%3A%0A%20%20%20%20vector%3Cvector%3Cstring%3E%3E%20groupAnagrams(vector%3Cstring%3E%26%20strs)%20%7B%0A%20%20%20%20%20%20%20%20unordered_map%3Cstring%2C%20vector%3Cstring%3E%3E%20mp%3B%0A%20%20%20%20%20%20%20%20for%20(string%20s%20%3A%20strs)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20string%20tmp%20%3D%20s%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20sort(tmp.begin()%2C%20tmp.end())%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20mp%5Btmp%5D.push_back(s)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20vector%3Cvector%3Cstring%3E%3E%20ret%3B%0A%20%20%20%20%20%20%20%20for%20(auto%20s%20%3A%20mp)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20ret.push_back(s.second)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20ret%3B%0A%20%20%20%20%7D%0A%7D%3B%0A%60%60%60%0A%0A%0A*`