Print Anagrams Together
Given an array of strings, return all groups of strings that are anagrams. The groups must be created in order of their appearance in the original array. Look at the sample case for clarification.
Input:
N = 5
words[] = {act,god,cat,dog,tac}
Output:
god dog
act cat tac
Explanation:
There are 2 groups of
anagrams "god", "dog" make group 1.
"act", "cat", "tac" make group 2.
Example 2:
Input:
N = 3
words[] = {no,on,is}
Output:
no on
is
Explanation:
There are 2 groups of
anagrams "no", "on" make group 1.
"is" makes group 2.
1. Sort each word separately and then compare it to others to find anagrams
2.Use hash map to compare words and store their relative order.
c++ implementation:
vector<vector<string> > Anagrams(vector<string>& a) { unordered_map<string,vector<string>>m; for(int i=0;i<a.size();i++) { string s=a[i]; sort(s.begin(),s.end()); m[s].push_back(a[i]); } vector<vector<string>>r; for(auto x:m) { r.push_back(x.second); } return r; }
No comments