leetcode 1002 查詢常用字元

2021-10-24 17:40:31 字數 1782 閱讀 3515

給定僅有小寫字母組成的字串陣列 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...