LeetCodeブラシ記録——第1002題(常用文字検索)


タイトルの説明
小文字のみからなる文字列配列Aが与えられ、リスト内の各文字列に表示されるすべての文字(重複文字を含む)からなるリストが返される.たとえば、1つの文字が各文字列に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]は小文字
構想分析
  • 各文字列の各アルファベットの出現頻度
  • をdicで記録する
  • compareは最初の文字列であり、後続の文字列のすべての文字と最初の文字列のすべての文字を比較し、取得回数が小さいものはcompareに
  • を記録する.
  • 最後にcompareに対応する文字列をその回数に基づいてappendをresに
  • 入れる.
    コードの例
    class Solution(object):
        def commonChars(self, A):
            """
            :type A: List[str]
            :rtype: List[str]
            """
            n = len(A)
            dic = [collections.Counter(A[i]) for i in range(n)]
            compare = dic[0]
            
            for i in range(1, n):
                for key in compare:
                    compare[key] = min(compare[key], dic[i][key])
                    
            res = list()
            for key in compare:
                for i in range(compare[key]):
                    res.append(key)
                    
            return res
    

    2019年4月1日理教エイプリルフールで騙されました