【24】49. Group Anagrams
49. Group Anagrams
- Total Accepted: 114214
- Total Submissions: 354423
- Difficulty: Medium
- Contributors: Admin
Given an array of strings, group anagrams together.
For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"]
,
Return:
[ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ]
Note: All inputs will be in lower-case.
1 class Solution { 2 public: 3 vector<vector<string>> groupAnagrams(vector<string>& strs) { 4 //哈希表建立的不是对每个字符串来说字母与个数的映射 5 //而是所有的字符串排序好后 字符串与其下标list的映射 6 /* 7 unordered_map<string, vector<int>> m; 8 vector<vector<string>> res; 9 vector<string> level; 10 for(int i = 0; i < strs.size(); i++){ 11 string s = strs[i]; 12 sort(s.begin(), s.end()); 13 m[s].push_back(i); 14 } 15 16 for(unordered_map<string, vector<int>>::iterator it = m.begin(); it != m.end(); it++){ 17 if(it -> second.size() > 0){ 18 for(int i = 0; i < it -> second.size(); i++){ 19 level.push_back(strs[it -> second[i]]); 20 } 21 //res.push_back(level); 22 } 23 res.push_back(level); 24 } 25 return res;*/ 26 27 28 29 unordered_map<string, vector<string>> m; 30 vector<vector<string>> res; 31 32 for(int i = 0; i < strs.size(); i++){ 33 string s = strs[i]; 34 sort(s.begin(), s.end()); 35 m[s].push_back(strs[i]); 36 } 37 38 for(auto a : m){ 39 vector<string> level = a.second;//这里a不是iterator指针 所以他的second用.来读取 40 res.push_back(level); 41 } 42 return res; 43 } 44 };