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:
- For the return value, each inner list's elements must follow the lexicographic order.
- All inputs will be in lower-case.
同一组的字符串排序以后一定是相同的。
排序后hash
public List<List<String>> groupAnagrams(String[] strs)
{
List<List<String>> retlist=new ArrayList<>();
int len=strs.length;
if(len<1)
return retlist;
HashMap<String, ArrayList<String>> hashmap=new HashMap<>();
for(String str:strs)
{
char[] carr=str.toCharArray();
Arrays.sort(carr);
String key=new String(carr);
ArrayList<String> arraylist=hashmap.get(key);
if(arraylist==null)
arraylist=new ArrayList<>();
arraylist.add(str);
hashmap.put(key, arraylist);
}
for(String key:hashmap.keySet())
{
ArrayList<String> alist=hashmap.get(key);
Collections.sort(alist);
retlist.add(alist);
}
return retlist;
}