给定string数组把所有的同构词都聚在一起:
例:
["eat", "tea", "tan", "ate", "nat", "bat"]
返回:
bat
eat tea ate
tan nat
说明:如果两个词所组成的字母完全相同,只是字母的位置不同,就称之为同构词。
思路:
遍历整个str数组,把他们排序的结果当作哈希数组的key,value值就是未排序的原始string,最后再用二维数组的string来接收,返回即可。
vector<vector<string>> getSameWord(vector<string>& str) { vector<vector<string>> ans; unordered_map<string, vector<string>> hash; for (auto s : str) { string key = s; sort(key.begin(), key.end()); hash[key].push_back(s); } for (auto iter : hash) { ans.push_back(iter.second); } return ans; }