LeetCode #1002. Find Common Characters

题目

1002. Find Common Characters


解题方法

首先遍历第一个字符串,将其中每个字母出现的频数存入字典dic,然后从第二个字符串开始遍历,使用一个tempcount字典存储当前字符串每个字母出现的频数,遍历dic的主键比较两个字典的区别,如果dic中的某个字母不在tempcount中,则存入列表等待删除;如果在tempcount中,就取两个频数的最小值给dic[i]。做完这个事情之后再遍历删除列表把待删元素删了,等所有单词遍历结束之后,根据每个字母的频数往返回值中加元素就行了。


代码

class Solution:
    def commonChars(self, A: List[str]) -> List[str]:
        dic = {}
        for i in A[0]:
            if i in dic:
                dic[i] += 1
            else:
                dic[i] = 1
        
        for word in range(1, len(A)):
            tempcount = {}
            for i in A[word]:
                if i in tempcount:
                    tempcount[i] += 1
                else:
                    tempcount[i] = 1
            delelem = []
            for i in dic.keys():
                if i not in tempcount:
                    delelem.append(i)
                else:
                    dic[i] = min(dic[i], tempcount[i])
            for i in delelem:
                dic.pop(i)
        
        rat = []
        for i, j in dic.items():
            while j:
                rat.append(i)
                j -= 1
        return rat
posted @ 2020-11-23 15:10  老鼠司令  阅读(81)  评论(0)    收藏  举报