当前位置:网站首页>LeetCode 49 字母异位词分组

LeetCode 49 字母异位词分组

2020-11-09 19:33:33 想用包子换论文

LeetCode49 字母异位词分组

题目描述

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

样例

输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
输出:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]

算法分析

  • 排序后,当作key,用hashmap存储
  • 遍历hash的values,加入ans即可

时间复杂度

\(O(nLlong(L))\)

Java代码

class Solution {
    
    public List<List<String>> groupAnagrams(String[] strs) {
        HashMap<String,List<String>> map = new HashMap<String,List<String>>();
        int n = strs.length;
        for(int i = 0; i < n; i++){
            char[] c = strs[i].toCharArray();
            Arrays.sort(c);
            String s = new String(c);
            if(!map.containsKey(s)){
                map.put(s, new ArrayList<String>());
            }
            map.get(s).add(strs[i]);

        }

        List<List<String>> ans = new ArrayList<List<String>>();

        for(List<String> t : map.values()){
            ans.add(t);
        }

        return ans;
    }
}

版权声明
本文为[想用包子换论文]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/vccyb/p/13950186.html