Учитывая массив A
строк, состоящих только из строчных букв, вернуть список всех символов, которые появляются во всех строках в списке (включая дубликаты). Например, если символ встречается 3 раза во всех строках, но не 4 раза, вам нужно включить этот символ три раза в окончательный ответ.
Пример 1:
Input: ["bella","label","roller"] Output: ["e","l","l"]
Пример 2:
Input: ["cool","lock","cook"] Output: ["c","o"]
Примечание.
1 <= A.length <= 100
1 <= A[i].length <= 100
A[i][j]
- строчная буква
Решение: Счетчик для каждого персонажа
Мы должны использовать collections.Counter
, что сделает код чистым и читаемым.
collections.Counter
подсчитает, сколько раз существует каждый символ.
In [185]: Counter("bella") Out[185]: Counter({'a': 1, 'b': 1, 'e': 1, 'l': 2})
И мы можем получить пересечение между разными словами.
In [187]: Counter("bella") & Counter("label") & Counter("roller") Out[187]: Counter({'e': 1, 'l': 2})
Весь код решения:
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