物以類聚 尋找共同的字元_字典應用_Leetcode #1002

閱讀時間約 3 分鐘

題目敘述

給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出

例如:每個字串都有兩個a,三個b,則輸出["a","a","b","b","b"]


測試範例

Example 1:

Input: words = ["bella","label","roller"]
Output: ["e","l","l"]

Example 2:

Input: words = ["cool","lock","cook"]
Output: ["c","o"]

約束條件

Constraints:

  • 1 <= words.length <= 100

每個單字的長度介於1~100之間。

  • 1 <= words[i].length <= 100

輸入陣列有1~100個單字。

  • words[i] consists of lowercase English letters.

每個單字只會有小寫英文字母。


觀察

共有的字元怎麼找?

其實就是交集的部分。

每個單字取交集,得到的就是共同的字元。


如果再考慮出現次數,可以使用字典統計每個字元的出現次數,再逐一對每個單字產生的字典取交集,得到的就是共同的字元伴隨著共有的出現次數


演算法 字典統計出現次數+字典取交集

承接觀察點的思考。

針對每個單字建立字典,統計每個字元的出現次數

接著對每個字典取交集,得到的就是共同的字元,伴隨著共有的出現次數


程式碼 字典統計出現次數+字典取交集

from collections import Counter
from functools import reduce

class Solution:
def commonChars(self, A: List[str]) -> List[str]:

# Base case:
A[0] = Counter(A[0])

# functor to evaluate intersection of Counter
func = lambda x, y: x & Counter(y)

# update dictionary for common characters by itersection of Counter
str_occ_dict = reduce( func, A)

return list( str_occ_dict.elements() )

複雜度分析

時間複雜度: O(n)

掃描過每個單字,統計每個英文字母的出現次數,接著取交集。


空間複雜度: O(n)

需要建立字典,題目已經說都是小寫英文字母,最多只會占用O(26*n) = O(n)的空間。


關鍵知識點

集合(Set): 檢查元素是否存在。

字典(HashMap, Dictionary): 統計元素的出現次數。

以本題來說,字典比集合更符合需求,是比較直覺也比較適合的資料結構。


Reference

[1] Find Common Characters - LeetCode

52會員
339內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
命理八字生活學-物以類聚近朱者赤,近墨者黑,正所謂物以類聚,就是我們可以從當事人周遭交友情況,大致上能夠定義這個人的所作所為,這點是我無法反駁的魔力,就算任何命理都無法逃脫此定律。
avatar
陳建銘-命理八字生活學
2024-05-02
物以類聚,人以群分.只有相同磁場的人才能懂你. 只有相同磁場的人才能相互欣賞. 只有相同磁場的人才能成為知己好友. 物以類聚,人以群分. 你想要怎樣的好朋友, 你就得先成為怎樣的人. 你愛上夜店就都是找愛上夜店的人. 你愛去誠品看書就是能遇上一樣愛閱讀的朋友. 你愛上健身房,當然也會與上健身同好. 當
Thumbnail
avatar
Justin Lee
2023-11-21
物以類聚,人以群分,凡事忠於初心,不用去討好任何人。根據心理學研究發現,人們通常喜歡那些在各方面與自己存在某種程度相似的人來往,包括生活態度、宗教信仰、興趣、愛好和價值觀等等。所以從小到大,在班級中,自然而然就會產生許多不同的小團體。一般來說,我們在同年齡層、同性別、同等學歷或有相同經歷的人之間,都會感到更容易相處。
Thumbnail
avatar
Angela.獵頭職人安琪拉
2023-11-12
命理八字生活學-物以類聚、人以群分  今天來講改變命運的第二元素-環境,昨天看到某風水網站講得多麼傳神,不論以前花多少錢添購的開運商品,但業績也不見好轉,只要換個老師,改變風水,不管紫微斗數、八字的大運走完,都能起死回生...,對我而言,最好的改運方式就是改自己,其他的都是輔助而已,然而輔助也是有所條件,那就是【環境】。
avatar
陳建銘-命理八字生活學
2023-07-24
物以類聚,人以群分跟什麼樣的人,走什麼樣的路,人的磁場本身就是一個能量場。 所以相同的人,相同的思維,也會有相同的結果。所以選擇跟什麼樣的人在一起很重要。 「物以類聚,人以群分」一語源自《周易.繫辭上》:「方以類聚,物以群分。」意思是指同類的東西常聚在一起。現代雖然多用來比喻壞人和壞人常在一起,原意卻類似於「近朱者赤
Thumbnail
avatar
瑄寶貝的美麗新生活
2023-06-28
物以類聚_難以忍受的人事物 最近因Netfilx上映《她和她的她》大受討論,明明做壞事的不是師母,在最後要照顧老公,體會痛苦的卻是師母。 當你給壞人一個容身之處,你也將是一個共犯。
avatar
Piggy
2022-11-26
物以類聚---多跟強者結交。不要沉溺在同溫層裡,跟失敗者窩在一起取暖吧!等到有一天你往來無白丁。那時候,你應該已經成功了。
Thumbnail
avatar
職場法蘭克
2022-08-18
小劇校20週年聯演-物以類聚《赤ㄍㄨㄟˇ》2020.12.24 知道是劇本後,想去找劇本。
Thumbnail
avatar
茗抹
2021-07-24
小劇校20週年聯演-物以類聚《#23:59 On Air》2020.12.13 它是實驗劇場,打勾。它是一個你我身邊正在發生的事,打勾。它關於標籤,打勾。它投影著最近的社會,打勾。他們說是沈浸式劇場,我好像滿習慣的,很像許多策展或是當代藝術,帶你進入一個個空間,感受與聆聽。
Thumbnail
avatar
茗抹
2021-07-24
小劇校20週年聯演-物以類聚《破繭時刻》2020.10.19 07:05:56 今天難得被鳥叫聲吵醒。
Thumbnail
avatar
茗抹
2021-07-24