LeetCode刷題 1002 查詢常用字元

2021-10-24 23:01:17 字數 1950 閱讀 4144

給定僅有小寫字母組成的字串陣列 a,返回列表中的每個字串中都顯示的全部字元(包括重複字元)組成的列表。例如,如果乙個字元在每個字串**現 3 次,但不是 4 次,則需要在最終答案中包含該字元 3 次。

你可以按任意順序返回答案。

示例 1:

輸入:[「bella」,「label」,「roller」]

輸出:[「e」,「l」,「l」]

示例 2:

輸入:[「cool」,「lock」,「cook」]

輸出:[「c」,「o」]

ord() 函式是 chr() 函式(對於8位的ascii字串)或 unichr() 函式(對於unicode物件)的配對函式,它以乙個字元(長度為1的字串)作為引數,返回對應的 ascii 數值,或者 unicode 數值,如果所給的 unicode 字元超出了你的 python 定義範圍,則會引發乙個 typeerror 的異常。

!!!必須圓括號!!!!!!!!!!!!!!!

>>

>

ord(

'a')

97>>

>

ord(

'b')

98>>

>

ord(

'c')

99

理清題意後,我們發現可以先統計字串陣列中每個字元出現的次數,然後比較得出字元在每個字串**現次數最小的部分,然後將其輸出。具體的做法如下:

以字串陣列第乙個字串為準,先記錄第乙個字串中每個字元出現的次數(這裡可用列表統計),定義為 min_freq;

遍歷後續的字串,統計字元出現次數的同時,與前面的進行比較,將字元出現次數較小的更新到 min_freq 中;

迴圈遍歷至結束,遍歷 min_freq,輸出對應次數個字元。

這裡,用列表統計字元次數,題目中說明只有小寫字母,那麼可以將定義長度為 26 的列表,字母按順序對應列表的索引。

python中for _ in range () 中』'的意思:其中』』 是乙個迴圈標誌,也可以用i,j 等其他字母代替,下面的迴圈中不會用到,起到的是迴圈此數的作用就像c語言中

class

solution

:def

commonchars

(self, a: list[

str])-

> list[

str]

:#構建空列表

min_freq=[0

]*26#print(min_freq)

#統計第乙個字串的pinlv

for i in a[0]

: min_freq[

ord(i)

-ord

('a')]

+=1#統計後續字串的出現次數

#print(len(a))

for n2 in

range(1

,len

(a))

: other_freq=[0

]*26for ch in a[n2]

: other_freq[

ord(ch)

-ord

('a')]

+=1#min_freq 中字元出現次數比對

for k in

range(26

):min_freq[k]

=min

(min_freq[k]

,other_freq[k]

)#輸出對應的字元

ans=

for i in

range

(len

(min_freq)):

for _ in

range

(min_freq[i]):

chr(i+

ord(

'a')))

return ans

Leetcode刷題筆記 1002 查詢常用字元

題目 給定僅有小寫字母組成的字串陣列 a,返回列表中的每個字串中都顯示的全部字元 包括重複字元 組成的列表。例如,如果乙個字元在每個字串 現 3 次,但不是 4 次,則需要在最終答案中包含該字元 3 次。你可以按任意順序返回答案。示例1 輸入 bella label roller 輸出 e l l ...

pat刷題之旅1002

一開始那道題,我的思路就是用乙個變數n來儲存所輸入的數,之後通過模10,除10運算來求得每一位上的數之和,最後將所求得的和進行模10,除10將每一位上的數放到陣列arr中,通過switch case語句對應到相應的漢字表示中。如下。include includeint main int s 0,i ...

pat 刷題記錄 pat 乙級 刷題 1002

讀入乙個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裡保證 n 小於 10 100 在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最後乙個拼音數字後沒有空格。123456789098765432...