字母异位词分组
题目介绍
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例1:
1 2 3 4 5 6 7
| 输入: ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ]
|
说明
题目解法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| package algorithm;
import java.util.*;
public class GroupAnagrams {
public static List<List<String>> groupAnagrams(String[] strs) { Map<String, List<String>> map = new HashMap<>(); for (String str : strs) { char[] array = str.toCharArray(); Arrays.sort(array); String key = new String(array); List<String> list = map.getOrDefault(key, new ArrayList<>()); list.add(str); map.put(key, list); } return new ArrayList<>(map.values()); }
public static void main(String[] args) { String[] strs = new String[]{"eat", "tea", "tan", "ate", "nat", "bat"}; System.out.println(groupAnagrams(strs)); } }
|
打印:
1
| [[eat, tea, ate], [bat], [tan, nat]]
|
思路:
思路上,没想到官方的思路这么简单,而且效率这么低。