zoukankan      html  css  js  c++  java
  • 30-Day Leetcoding Challenge Day6

    本题有两种思路:

    第一种是将key-value中的key通过排序存储到set集合,value添加该字符串

    第二种是将key-value中的key通过数组计数方式存储,value添加该字符串

    JAVA

    class Solution {
        public List<List<String>> groupAnagrams(String[] strs) {
            if(strs.length == 0)
                return new ArrayList();
            Map<String, List> res = new HashMap<String, List>();
            for(String s : strs){
                char[] ca = s.toCharArray();
                Arrays.sort(ca);
                String key = String.valueOf(ca);
                if(!res.containsKey(key))
                    res.put(key, new ArrayList());
                res.get(key).add(s);
            }
            return new ArrayList(res.values());
        }
    }
    class Solution {
        public List<List<String>> groupAnagrams(String[] strs) {
            if(strs.length == 0)
                return new ArrayList();
            Map<String, List> res = new HashMap<String, List>();
            for(String s : strs){
                char[] ca = s.toCharArray();
                int[] count = new int[26];
                for(int i = 0; i < ca.length; i++){
                    count[ca[i] - 'a']++;
                }
                StringBuilder sb = new StringBuilder("");
                for(int i = 0; i < count.length; i++){
                    sb.append('#');
                    sb.append(count[i]);
                }
                String key = sb.toString();
                if(!res.containsKey(key))
                    res.put(key, new ArrayList());
                res.get(key).add(s);
            }
            return new ArrayList(res.values());
        }
    }

    Python3

    class Solution:
        def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
            res = collections.defaultdict(list)
            for s in strs:
                key = tuple(sorted(s))
                res[key].append(s)
            return res.values()
    class Solution:
        def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
            res = collections.defaultdict(list)
            for s in strs:
                count = [0]*26
                for c in s:
                    count[ord(c) - ord('a')] += 1 #注意ord函数返回ASCII值
                res[tuple(count)].append(s) #key必须为tuple不可变类型
            return res.values()
  • 相关阅读:
    烯烃(olefin) 题解
    二分图的考验 题解
    树上的好题
    [SDOI2013]直径 题解
    [ZJOI2010]数字计数 题解
    神在夏至祭降下了神谕 题解
    洛谷 P4198 楼房重建 题解
    [HAOI2010]软件安装 题解
    [POI2011]ROT-Tree Rotations 题解
    可并堆之左偏树浅谈
  • 原文地址:https://www.cnblogs.com/yawenw/p/12650663.html
Copyright © 2011-2022 走看看