题目
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例 2:
输入: strs = [""] 输出: [[""]]
示例 3:
输入: strs = ["a"] 输出: [["a"]]
提示:文章来源:https://www.toymoban.com/news/detail-609520.html
1 <= strs.length <= 10^4
0 <= strs[i].length <= 100
-
strs[i]
仅包含小写字母
解答
源代码
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String, List<String>> hashMap = new HashMap<String, List<String>>();
List<String> list = new ArrayList<String>();
for (String str : strs) {
char[] arr = str.toCharArray();
Arrays.sort(arr);
String key = Arrays.toString(arr);
list = hashMap.getOrDefault(key, new ArrayList<String>());
list.add(str);
hashMap.put(key, list);
}
return new ArrayList<List<String>>(hashMap.values());
}
}
总结
字母异位词包含的字母种类和数量都是相同的,那么将它们排序后得到的字符串其实都是相同的,那么就可以使用哈希表,将排序后得到的字符串作为键,将对应的原字符串添加到这个键对应的值当中,最后将值的集合返回。文章来源地址https://www.toymoban.com/news/detail-609520.html
到了这里,关于【LeetCode】49.字母异位词分组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!