题目描述
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例
题解
偷懒了,主要利用了Java8中的Stream。
Stream详细用法可参见
Java —— Stream的使用
代码
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String, List<String>> collect = Arrays.stream(strs).collect(
Collectors.groupingBy(
str -> {
char[] array = str.toCharArray();
Arrays.sort(array);
return new String(array);
}
)
);
return new ArrayList<>(collect.values());
}
}
性能
注意点
其实标准解法,应该使用HashMap,以排序后的字符串作为key,原始字符串作为value,达到分类的效果。
当不知道怎么写题时,想想HashMap。