package com.heu.wsq.leetcode;
import java.util.*;
/**
* 49. 字母异位词分组
* @author wsq
* @date 2020/12/14
* 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
*
* 示例:
*
* 输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
* 输出:
* [
* ["ate","eat","tea"],
* ["nat","tan"],
* ["bat"]
* ]
* 说明:
*
* 所有输入均为小写字母。
* 不考虑答案输出的顺序。
*
* 链接:https://leetcode-cn.com/problems/group-anagrams
*/
public class GroupAnagrams {
/**
* 排序 + 哈希表
* @param strs
* @return
*/
public List<List<String>> groupAnagrams(String[] strs) {
Map<String, List<String>> map = new HashMap<>();
for (String str : strs) {
char[] chars = str.toCharArray();
Arrays.sort(chars);
String s = new String(chars);
List<String> tmpList = null;
if (map.get(s) == null){
tmpList = new ArrayList<>();
map.put(s, tmpList);
}
tmpList = map.get(s);
tmpList.add(str);
}
List<List<String>> ans = new ArrayList<>();
for (Map.Entry<String, List<String>> stringListEntry : map.entrySet()) {
ans.add(stringListEntry.getValue());
}
return ans;
}
public static void main(String[] args) {
String[] strs = {"eat", "tea", "tan", "ate", "nat", "bat"};
GroupAnagrams ga = new GroupAnagrams();
List<List<String>> ans = ga.groupAnagrams(strs);
}
}
49. 字母异位词分组
最新推荐文章于 2025-05-13 09:36:36 发布

1432

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



