【leetcode-字母异位词分组】

发布于:2025-06-20 ⋅ 阅读:(11) ⋅ 点赞:(0)

在这里插入图片描述

排序法

    public List<List<String>> groupAnagrams(String[] strs) {
        //最终值
        List<List<String>> result = new ArrayList<>();
        //排序法
        HashMap<String,List<String>> map = new HashMap<>(); 
        //遍历str
        for(String str : strs){
            //对str进行排序
            char[] chars =str.toCharArray();
            Arrays.sort(chars);
            String strKey = new String(chars);
            if(!map.containsKey(strKey)){
                List<String> valueList = new ArrayList<>();
                valueList.add(str);
                map.put(strKey,valueList);
            }else{
               List<String> valueList  =map.get(strKey);
               valueList.add(str);
               map.put(strKey,valueList);
            }
        }
        //获取Map的value,并将value存放在result中。
        map.values().forEach(
            list->{
                result.add(list);
            }
        );
        System.out.println(result.size());
        //将map中
        return result;
    }

哈希法

    public List<List<String>> groupAnagrams(String[] strs) {
        HashMap<String,ArrayList<String>> result = new HashMap<>();
        for(String s : strs){
            int[] count_talbe= new int[26];
            for(char c : s.toCharArray()){
                count_talbe[c-'a']++;
            }

            StringBuilder sb = new StringBuilder();
            for(int count : count_talbe){
                sb.append("#");
                sb.append(count);
            }
            String key = sb.toString();
            if(!result.containsKey(key)){
                result.put(key,new ArrayList<>());
            }
            result.get(key).add(s);
        }
        return new ArrayList(result.values());
    }

网站公告

今日签到

点亮在社区的每一天
去签到