思路展示

由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的(但是两个字符串分别排序时,不能改变原字符串,所以要用一个temp字符串来存储原字符串然后再进行排序),故可以将排序之后的字符串作为哈希表的键。

示例代码

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        unordered_map<string,vector<string>> myMap;
        for(string str:strs){
            string temp=str;
            sort(temp.begin(),temp.end());
            myMap[temp].push_back(str);
        }
        vector<vector<string>> res;
        for(auto& [key,val]:myMap){
            res.push_back(val);
        }
        return res;
    }
};
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

效果展示

LeetCode----49.字母移位词分组(temp字符串来存储原字符串然后再进行排序)_算法