1002. 查找常用字符(Python)

更多精彩內(nèi)容,請(qǐng)關(guān)注【力扣簡(jiǎn)單題】。

題目

難度:★★☆☆☆
類型:字符串

給定僅有小寫(xiě)字母組成的字符串?dāng)?shù)組 A,返回列表中的每個(gè)字符串中都顯示的全部字符(包括重復(fù)字符)組成的列表。例如,如果一個(gè)字符在每個(gè)字符串中出現(xiàn) 3 次,但不是 4 次,則需要在最終答案中包含該字符 3 次。

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

提示
1 <= A.length <= 100
1 <= A[i].length <= 100
A[i][j] 是小寫(xiě)字母

示例

示例 1
輸入:["bella","label","roller"]
輸出:["e","l","l"]

示例 2
輸入:["cool","lock","cook"]
輸出:["c","o"]

解答

方案1:統(tǒng)計(jì)每個(gè)單詞

我們?yōu)槊總€(gè)單詞準(zhǔn)備一個(gè)長(zhǎng)度為26的列表,列表中第i個(gè)元素代表字母表中第i個(gè)字母在這個(gè)單詞中出現(xiàn)的次數(shù),然后我們?nèi)?6個(gè)字母在每個(gè)單詞出現(xiàn)的最小次數(shù),得到結(jié)果。

class Solution:
    def commonChars(self, A):
        """
        :param A: List[str]
        :return: List[str]
        """

        def counter(word):
            res = [0] * 26
            for a in word:
                res[ord(a)-97] += 1
            return res

        count = [counter(w) for w in A]

        min_count = [min([w[i] for w in count]) for i in range(26)]

        res = []
        for i in range(26):
            while min_count[i] > 0:
                res.append(chr(i+97))
                min_count[i] -= 1

        return res

方案2:只統(tǒng)計(jì)第一個(gè)單詞

取出第一個(gè)單詞中的所有字母組成集合,然后考察該集合中的字母在每個(gè)單詞中出現(xiàn)過(guò)的最小次數(shù)。

class Solution(object):
    def commonChars(self, A):
        """
        :type A: List[str]
        :rtype: List[str]
        """
        res = []
        if not A:
            return res
        key = set(A[0])
        for k in key:
            minnum = min(a.count(k) for a in A)
            res += minnum*k
        return res

如有疑問(wèn)或建議,歡迎評(píng)論區(qū)留言~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容