题目
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。(字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次。)
跳转链接:LeetCode49
解析
本题要求将字符异位词放入同一个集合中,最后返回。
我们可以通过 Map 的 key,value 结构,由于异位词的组成字母是一样的所以我们可以将组成异位词的字母排序成一个新的字符串当作 key,然后将字符串集合作为 value。
public class Solution {
private Map<String, List<String>> res = new HashMap<>();
public List<List<String>> groupAnagrams(String[] strs) {
for (String str : strs) {
char[] chs = str.toCharArray();
//将字符串转为字符数组后进行排序
Arrays.sort(chs);
//如果map中不存在相应的key value则插入一个新的key value
res.putIfAbsent(Arrays.toString(chs), new ArrayList<>());
//获取对应key的list集合并向集合中添加字符串
res.get(Arrays.toString(chs)).add(str);
}
return new ArrayList<>(res.values());
}
}
1151

被折叠的 条评论
为什么被折叠?



