LeetCode 1002. 查找共用字符

LeetCode 1002. 查找共用字符缩略图

给你一个字符串数组 words ,请你找出所有在 words 的每个字符串中都出现的共用字符( 包括重复字符),并以数组形式返回。你可以按 任意顺序 返回答案。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/find-common-characters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

LeetCode 1002. 查找共用字符插图
OpenCV步步精深-可心科创工作室

思路:哈希表,直接找到所有共有字母,然后分别找出字典中每个字母中数量最小的值,然后组成新列表

python3实现:

class Solution:
    def commonChars(self, words: List[str]) -> List[str]:
        # 直接哈希表统计
        l1 = []
        for elem in words:
            each = collections.Counter(elem)
            l1.append(each)
        
        # 取共同key值最小的value值
        dic_ = {}
        standard_key = l1[0].keys()
        for key in standard_key:
            tmp = l1[0][key]
            
            for every in l1[1:]:
                if key in every:
                    tmp = min(every[key], tmp)
                else:
                    tmp = 0
                    break
            dic_[key] = tmp

        # 根据得到的结果构成新列表
        final_list = []
        for k in dic_:
            if dic_[k] != 0:
                for count in range(dic_[k]):
                    final_list.append(k)
        return final_list
LeetCode 1002. 查找共用字符插图1
OpenCV步步精深-可心科创工作室

更多干货见 OpenCV步步精深