要求
给你一个字符串数组 words ,请你找出所有在 words 的每个字符串中都出现的共用字符( 包括重复字符),并以数组形式返回。你可以按 任意顺序 返回答案。
示例 1:
输入:words = ["bella","label","roller"]
输出:["e","l","l"]
示例 2:
输入:words = ["cool","lock","cook"]
输出:["c","o"]
核心代码
class Solution:
def commonChars(self, words: List[str]) -> List[str]:
import collections
n = len(words)
dic = [collections.Counter(words[i]) for i in range(n)]
compare = dic[0]
for i in range(1,n):
for key in compare:
compare[key] = min(compare[key],dic[i][key])
res = list()
for key in compare:
for i in range(compare[key]):
res.append(key)
return res
解题思路:比较核心的一句代码是compare[key] = min(compare[key],dic[i][key]),因为我们是要找公共的字符,所以我们以一个统计字典进行存储即可,在这个字典中存在键在其他的统计字典中都有,就直接替换成最小的那个值,如果当前统计字典中的数据是没有的,就会返回零,也就是不存在,最后我们使用循环将公共数据放到一起,后面的二次循环是一个字母可能有多次的重复,所以我们需要向其中加入n次,最终得到想要的结果。