题目描述:
给你一个字符串数组,请你将字母异位词 组合在一起。可以按任意顺序返回结果列表。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
解释:
- 在 strs 中没有字符串可以通过重新排列来形成 。
"bat" - 字符串 和 是字母异位词,因为它们可以重新排列以形成彼此。
"nat""tan" - 字符串 , 和 是字母异位词,因为它们可以重新排列以形成彼此。
"ate""eat""tea"
示例 2:
输入: strs = [""]
输出: [[""]]
1、排序

- 需要先判断哈希表里有没有key,没有key——>key+新数组插入哈希put。
- 如果像注释写的那样,先判断在 ——>插入value,再新建会导致key下面所有的数组都是新建的空数组(覆盖了)
- 先新建后插入
1 class Solution { 2 public List<List<String>> groupAnagrams(String[] strs) { 3 if(strs.length == 0)return new ArrayList(); 4 Map<String, List> ans = new HashMap<String, List>(); 5 for(String s:strs){ 6 char[] ca = s.toCharArray(); 7 Arrays.sort(ca); 8 String key = String.valueOf(ca); 9 // if(ans.containsKey(key))ans.get(key).add(s); 错误写法 10 // ans.put(key,new ArrayList()); 11 if(!ans.containsKey(key))ans.put(key, new ArrayList()); 12 ans.get(key).add(s); 13 } 14 return new ArrayList(ans.values()); 15 } 16 }