LeetCode1002. 查詢常用字元(雜湊表、count)

NLP_victor發表於2020-10-14

1、題目描述

https://leetcode-cn.com/problems/find-common-characters/

給定僅有小寫字母組成的字串陣列 A,返回列表中的每個字串中都顯示的全部字元(包括重複字元)組成的列表。

例如,如果一個字元在每個字串中出現 3 次,但不是 4 次,則需要在最終答案中包含該字元 3 次。

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

輸入:["bella","label","roller"]
輸出:["e","l","l"]
輸入:["cool","lock","cook"]
輸出:["c","o"]
  1. 1 <= A.length <= 100
  2. 1 <= A[i].length <= 100
  3. A[i][j] 是小寫字母

2、程式碼詳解

class Solution(object):
    def commonChars(self, A):
        """
        :type A: List[str]
        :rtype: List[str]
        """
        from collections import Counter
        ans = Counter(A[0])
        for i in A[1:]:
            ans &= Counter(i)
        return list(ans.elements())
class Solution:
    def commonChars(self, A):

        if not A:
            return []

        res = []
        for c in set(A[0]):
            count = [w.count(c) for w in A]
            s = c * min(count)  # 如果不是每個單詞都有的字母,min(count)=0
            for a in s:
                res.append(a)
        return res

解題思路:hash陣列,統計每個字母出現的次數,求交集。

set()函式,順序會亂,但題目不看順序

class Solution:
    def commonChars(self, A: List[str]) -> List[str]:
        result = list()
        for w in set(A[0]):
            count = [x.count(w) for x in A]
            a = w * min(count)
            for i in a:
                result.append(i)
        return result

 

相關文章