题目
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
说明:
1、所有输入均为小写字母;
2、不考虑答案输出的顺序。

注意点
对每一个字符串进行排序,相同则为字母异位词,使用map映射存放在同一组。
实现
public List<List<String>> groupAnagrams(String[] strs) {
//记录结果
List<List<String>> result = new ArrayList<>();
if(strs == null || strs.length == 0) return result;
//map存放每一组字母异位词组合,key为排好序字符串,value为字母异位词组合
Map<String, List<String>> map = new HashMap<>();
for(String s : strs){
char[] cs = s.toCharArray();
//排序
Arrays.sort(cs);
String key = String.valueOf(cs);
//不存在该字母异位词组合,则新建组合
if(!map.containsKey(key)) map.put(key, new ArrayList<String>());
//在对应map中添加字母异位词
map.get(key).add(s);
}
//处理结果并返回
result = new ArrayList(map.values());
return result;
}
这篇博客探讨了如何通过排序字符串并利用Map来分组字母异位词。作者强调所有输入字符串都是小写字母,并且不关心答案的输出顺序。他们提出将每个字符串排序后作为键,存放在Map的同一个值中,以此来识别和组合字母异位词。
1153

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



