力扣每日一题
查找常用字符
给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。
from collections import Counter
def commonchars(A):
res = None
for a in A:
c = Counter(a)
if res is None:
res = c
else:
res &= c
return list(res.elements())
输入 [“bella”,“label”,“roller”]
输出 [“e”,“l”,“l”]
预期结果 [“e”,“l”,“l”]
题目很简单,要点是如何排开列表内各字符串各字母的出现频率,这里直接调用Counter功能,Counter工具用于支持便捷和快速的计数,
from collections import Counter
cnt = Counter()
for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
cnt[word] += 1
print cnt
输出为
Counter({
'blue':3,'red':2,'green':1})
res &= c,展开式:res = res & c Counter特有的算数运算,使用&时,取两个Counter对象中交集元素计数小的结果。
例子:
Counter(‘AAB’) & Counter(‘BBCC’)
结果是:
{‘B’: 1}
过程:
第一步:得到元素计数:
{‘A’:2, “B”:1} , {‘B’:2,‘C’:2}
第二步:取交集:
{‘B’:1} & {‘B’:2}
第三步:得出结果:取计数小的结果:
{‘B’: 1}
结束! 每日一题————2020-10-16