字母异位词分组
问题陈述
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:
1 2 3 4 5 6 7
| 输入: ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ]
|
思路分析
可以考虑使用HashMap来实现。键为字母异位词的排序结果,值为可能出现的各种组合。
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public List<List<String>> groupAnagrams(String[] strs) { HashMap<String, List<String>> hash = new HashMap<>(); for (int i = 0; i < strs.length; i++) { char[] s_arr = strs[i].toCharArray(); Arrays.sort(s_arr); String key = String.valueOf(s_arr); if (hash.containsKey(key)) { hash.get(key).add(strs[i]); } else { List<String> temp = new ArrayList<String>(); temp.add(strs[i]); hash.put(key, temp); }
} return new ArrayList<List<String>>(hash.values()); }
|