力扣每日一題
- 查找常用字符
查找常用字符
鏈接 :https://leetcode-cn.com/problems/find-common-characters/solution/cha-zhao-chang-yong-zi-fu-by-leetcode-solution/
給定僅有小寫字母組成的字串陣列 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/179103.html
標籤:其他
