classSolution: defcommonChars(self, A): n = len(A) if n == 1: return [] result = sorted(A[0]) for i in range(1, n): result = common(result, A[i]) return result
defcommon(A, B): result = [] B = sorted(B) m = len(A) n = len(B) i = 0 j = 0 while i < m and j < n: if A[i] < B[j]: i += 1 elif A[i] > B[j]: j += 1 else: result.append(A[i]) i += 1 j += 1 return result
Version 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14
classSolution: defcommonChars(self, A): n = len(A) if n == 1: return [] result = list(A[0]) B = [list(A[i]) for i in range(1, n)] for ch in A[0]: for i in range(n - 1): if ch notin B[i]: result.remove(ch) break B[i].remove(ch) return result