给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"], 输出: [
["ate","eat","tea"], ["nat","tan"], ["bat"]] 说明:
所有输入均为小写字母。 不考虑答案输出的顺序。
题解分析
1.
怎么判断是不是异位分词呢? 想想异位分词具有什么特点?
---- 异位分词中,
字母出现次数相同, 字母顺序不同
----
因此我们可以 排序后观察 / 26字母次数统计 进行比较.
当然注意别做一类扫一遍,
用个字典自动分类就可以了.
题解代码----排序+字典
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class Solution { public: vector<vector<string groupAnagrams(vector<string& strs) { //加字典的排序 vector<vector<string result; unordered_map<string, vector<string hashmap; for(string s : strs) { string temp = s; sort(temp.begin(), temp.end()); hashmap[temp].push_back(s); } for(auto i : hashmap) { result.push_back(i.second); } return result; } };
|