1002. Find Common Characters

Xu LIANG
LeetCode Cracker
Published in
1 min readMar 12, 2019

Given an array A of strings made only from lowercase letters, return a list of all characters that show up in all strings within the list (including duplicates). For example, if a character occurs 3 times in all strings but not 4 times, you need to include that character three times in the final answer.

Example 1:

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

Example 2:

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

Note:

  1. 1 <= A.length <= 100
  2. 1 <= A[i].length <= 100
  3. A[i][j] is a lowercase letter

Solution: Counter for each character

We should make use of collections.Counter, which will make the code clean and readable.

collections.Counterwill count how many times each character exist.

In [185]: Counter("bella")
Out[185]: Counter({'a': 1, 'b': 1, 'e': 1, 'l': 2})

And we can get the intersection among different words.

In [187]: Counter("bella") & Counter("label") & Counter("roller")
Out[187]: Counter({'e': 1, 'l': 2})

The whole solution code:

class Solution:
def commonChars(self, A: List[str]) -> List[str]:
from collections import Counter
counts = Counter(A[0])
for word in A:
counts &= Counter(word)

res = []
for letter, count in counts.items():
res += [letter] * count
return res

--

--

Xu LIANG
LeetCode Cracker

I’m an engineer focusing on NLP and Data Science. I write stuff to repay the engineer community. You can find me on linkedin.com/in/xu-liang-99356891/