package algorithmStudy;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test49_cwk {
public static void main(String[] args) {
String[] input = {"eat", "tea", "tan", "ate", "nat", "bat"};
Solution49 sol = new Solution49();
List<List<String>> anagrams = sol.groupAnagrams(input);
System.out.println("[");
for(int i = 0; i < anagrams.size(); i++)
{
if(i == anagrams.size() - 1)
{
System.out.println(" " + anagrams.get(i));
}
else {
System.out.println(" " + anagrams.get(i) + ",");
}
}
System.out.println("]");
}
}
class Solution49 {
public List<List<String>> groupAnagrams(String[] input) {
Map<String, List<String>> map = new HashMap<String, List<String>>();
for(int i = 0; i < input.length; i++)
{
String str = input[i];
char[] strCharArr = str.toCharArray();
Arrays.sort(strCharArr);
String key = String.valueOf(strCharArr);
if(!map.containsKey(key))
{
map.put(key, new ArrayList<String>());
}
map.get(key).add(str);
}
return new ArrayList<List<String>>(map.values());
}
}