49. 字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例 2:
输入: strs = [""]
输出: [[""]]
示例 3:
输入: strs = ["a"]
输出: [["a"]]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/group-anagrams
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
排序
class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String, List<String>> map = new HashMap<String, List<String>>();
        for (String str : strs) {
            char[] array = str.toCharArray();
            Arrays.sort(array);
            String key = new String(array);
            List<String> list = map.getOrDefault(key, new ArrayList<String>());
            list.add(str);
            map.put(key, list);
        }
        return new ArrayList<List<String>>(map.values());
    }
}
计数
import java.util.*;
class Solution {
    private String getHash(int[] cnt) {
        StringBuilder sb = new StringBuilder();
        for (int x : cnt) {
            sb.append(x).append("$");
        }
        return sb.toString();
    }
    private int[] getCnt(String str) {
        if (str == null || str.length() == 0) {
            return new int[26];
        }
        int[] cnt = new int[26];
        for (int i = 0; i < str.length(); ++i) {
            cnt[str.charAt(i) - 'a']++;
        }
        return cnt;
    }
    public List<List<String>> groupAnagrams(String[] strs) {
        if (strs == null || strs.length == 0) {
            return Collections.emptyList();
        }
        Map<String, List<String>> map = new HashMap<>();
        List<List<String>> ret = new ArrayList<>();
        for (String str : strs) {
            String hash = getHash(getCnt(str));
            List<String> list = map.get(hash);
            if (list == null) {
                list = new ArrayList<>();
                map.put(hash, list);
                ret.add(list);
            }
            list.add(str);
        }
        return ret;
    }
}
    心之所向,素履以往 生如逆旅,一苇以航

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号