ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LeetCode 1002. 查找常用字符

2022-09-05 17:32:44  阅读:169  来源: 互联网

标签:tmp 字符 res 1002 minx 查找 words dic LeetCode


代码随想录链接:

https://gitee.com/programmercarl/leetcode-master/blob/master/problems/1002.查找常用字符.md

思路:

第一步统计每个字符串的字符出现频数并存hash,最后统计每个字符(以第一个串的字符为准即可)出现频数的最小值(为0则表示非共有字符)作为res的字符重复数输出即可

我的代码:

class Solution:
    def commonChars(self, words: List[str]) -> List[str]:
        from collections import defaultdict
        dic = [defaultdict(int)]
        for i in range(len(words)):
            dic.append(defaultdict(int))
            for j in range(len(words[i])):
                dic[i][words[i][j]] += 1
        res = []
        minx = float('inf')
        for i in set(words[0]):
            for j in dic:
                if minx > j[i]:
                    minx = j[i]
            for _ in range(minx):
                res.append(i)
            minx = float('inf')
        return res

但还不够简化,随想录提到了collections.Counter,专门统计元素出现频数,且可直接对counter取交集,返回value最小值的键值对(defaultdict不行):

class Solution:
    def commonChars(self, words: List[str]) -> List[str]:
        tmp = collections.Counter(words[0])
        l = []
        for i in range(1,len(words)):
            # 使用 & 取交集
            tmp = tmp & collections.Counter(words[i])

        # 剩下的就是每个单词都出现的字符(键),个数(值)
        for j in tmp:
            v = tmp[j]
            while(v):
                l.append(j)
                v -= 1
        return l

标签:tmp,字符,res,1002,minx,查找,words,dic,LeetCode
来源: https://www.cnblogs.com/Linanjing/p/16658916.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有