0049. 字母异位词分组
2021-08-23 本文已影响0人
蓝笔头
题目地址
题目描述
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
说明:
所有输入均为小写字母。
不考虑答案输出的顺序。
题解
暴力枚举
枚举每一个
str
,对其进行排序,其排序后的值作为key
,其原始值作为value
,用map
存储。
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String, List<String>> map = new HashMap<>();
for (int i = 0; i < strs.length; ++ i) {
String value = strs[i];
String key = sort(value);
put(key, value, map);
}
return map.values().stream().collect(Collectors.toList());
}
public String sort(String str) {
char[] chars = str.toCharArray();
Arrays.sort(chars);
return new String(chars);
}
public void put(String key, String value, Map<String, List<String>> map) {
if (!map.containsKey(key)) {
map.put(key, new ArrayList<String>());
}
map.get(key).add(value);
}
}