這題給定一個 array 包含一些 string,要求我們將由同樣字元組成的 string 歸到同一個 array。
EX:
Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ]
想法:
我們可以先將每個 string 分別 sort 之後在利用 HashMap 來進行分類,因為由同樣字元組成的 string 在
排序過後一定會相同。
完整程式碼:
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string, vector<string>> m;
for (int i = 0; i < strs.size(); i++) {
auto sorted_str = strs[i];
sort(sorted_str.begin(), sorted_str.end());
m[sorted_str].emplace_back(strs[i]);
}
vector<vector<string>> res;
for (auto& anagram : m) {
res.emplace_back(anagram.second);
}
return res;
}
};
沒有留言:
張貼留言