給定僅有小寫字母組成的字串陣列 a,返回列表中的每個字串中都顯示的全部字元(包括重複字元)組成的列表。例如,如果乙個字元在每個字串**現 3 次,但不是 4 次,則需要在最終答案中包含該字元 3 次。
你可以按任意順序返回答案。
示例 1:
輸入:["bella","label","roller"]
輸出:["e","l","l"]
示例 2:
輸入:["cool","lock","cook"]
輸出:["c","o"]
1 <= a.length <= 100
1 <= a[i].length <= 100
a[i][j] 是小寫字母
用26個大小的雜湊表記錄每個字母出現的次數。
雜湊表版:
class
solution
:def
commonchars
(self, a: list[
str])-
> list[
str]
: cnt =
[100]*
26for ai in a:
ai_cnt =[0
]*26for each_ch in ai:
ai_cnt[
ord(each_ch)-97
]+=1for i in
range(26
):cnt[i]
=min
(cnt[i]
, ai_cnt[i]
) ans =
for i in
range(26
):if cnt[i]!=0
: ans +=
[chr
(i +97)
]* cnt[i]
return ans
python內建的counter
類可以使用counter & counter
求交集,counter.elements()
會返回乙個可迭代物件,裡面是counter
類的元素*出現次數。再加上python3的functools庫裡面有reduce
方法,所以**可以簡化為:
class
solution
:def
commonchars
(self, a: list[
str])-
> list[
str]
:return
list
(reduce
(lambda x, y: x & y,
map(collections.counter, a)
).elements(
))
說明
a = collections.counter(
'abcdaaa')a
>>
> counter(
)a.elements(
)>>
>
>
list
(a.elements())
>>
>
['a'
,'a'
,'a'
,'a'
,'b'
,'c'
,'d'
]
leetcode 1002查詢常用字元
題目 給定僅有小寫字母組成的字串陣列 a,返回列表中的每個字串中都顯示的全部字元 包括重複字元 組成的列表。例如,如果乙個字元在每個字串 現 3 次,但不是 4 次,則需要在最終答案中包含該字元 3 次。你可以按任意順序返回答案。如下 class solution for int i 1 i a.l...
LeetCode 1002 查詢常用字元
題目 給定僅有小寫字母組成的字串陣列 a,返回列表中的每個字串中都顯示的全部字元 包括重複字元 組成的列表。例如,如果乙個字元在每個字串 現 3 次,但不是 4 次,則需要在最終答案中包含該字元 3 次。你可以按任意順序返回答案。示例 1 輸入 bella label roller 輸出 e l l...
LeetCode1002 查詢常用字元
一.題目 題目給定僅有小寫字母組成的字串陣列 a,返回列表中的每個字串中都顯示的全部字元 包括重複字元 組成的列表。例如,如果乙個字元在每個字串 現 3 次,但不是 4 次,則需要在最終答案中包含該字元 3 次。你可以按任意順序返回答案。示例 二.方法一 解題思路 解題 def commonchar...