Given a string array words, return an array of all characters that show up in all strings within the words (including duplicates). You may return the answer in any order.
Example 1:
Input: words = ["bella","label","roller"]
Output: ["e","l","l"]
Example 2:
Input: words = ["cool","lock","cook"]
Output: ["c","o"]
Constraints:
1 <= words.length <= 100
1 <= words[i].length <= 100
words[i] consists of lowercase English letters.
Solutions
Solution 1: Counting
We use an array \(cnt\) of length \(26\) to record the minimum number of times each character appears in all strings. Finally, we traverse the \(cnt\) array and add characters with a count greater than \(0\) to the answer.
The time complexity is \(O(n \sum w_i)\), and the space complexity is \(O(|\Sigma|)\). Here, \(n\) is the length of the string array \(words\), \(w_i\) is the length of the \(i\)-th string in the array \(words\), and \(|\Sigma|\) is the size of the character set, which is \(26\) in this problem.