编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。
注意:本题相对原题稍作修改
示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
说明:
所有输入均为小写字母。
不考虑答案输出的顺序。
方法1:Hash
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> res = new ArrayList<>();
HashMap<String, List<String>> map = new HashMap<>();
for (String str : strs) {
char[] chas = str.toCharArray();
Arrays.sort(chas);
String k = String.valueOf(chas);
map.putIfAbsent(k, new ArrayList<>());
map.get(k).add(str);
}
for (List<String> v : map.values()) {
res.add(new ArrayList<>(v));
}
return res;
}