Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
Solution: Sort the string to see if they're anagrams.
1 class Solution { 2 public: 3 vector<string> anagrams(vector<string> &strs) { 4 map<string,vector<int> > hashmap; // apply hashmap (BST) 5 for(int i = 0; i < strs.size(); i++) { 6 string s = strs[i]; 7 sort(s.begin(), s.end()); 8 hashmap[s].push_back(i); 9 } 10 11 vector<string> res; 12 for(map<string,vector<int> >::iterator it = hashmap.begin(); it != hashmap.end(); it++) { 13 vector<int>& tmp = it->second; 14 for(int i = 0; i < tmp.size(); i++) { 15 if(tmp.size() > 1) { 16 res.push_back(strs[tmp[i]]); 17 } 18 } 19 } 20 return res; 21 } 22 };