此题解使用集合和列表来找出所有字符串共有的字符。首先,取出第一个单词的所有不同字符形成一个集合。对于这个集合中的每个字符,遍历输入的所有单词,计算每个单词中该字符出现的次数。然后,取这些次数中的最小值,表示该字符在所有单词中共同出现的最少次数。接着,将这个字符重复最小次数次,添加到结果列表中。这样做能确保仅包含所有单词都至少有的字符,并正确处理重复字符的情况。
时间复杂度: O(K*N*M)
空间复杂度: O(M)
class Solution:
def commonChars(self, words: list[str]) -> list[str]:
res = [] # 结果列表
w_c = set(words[0]) # 从第一个单词中获取所有不同的字符
for w in w_c: # 遍历每个字符
num_list = [] # 存储每个单词中该字符的出现次数
for wd in words: # 遍历每个单词
num_list.append(wd.count(w)) # 计算并添加该字符的出现次数
small = min(num_list) # 找到该字符在所有单词中的最小出现次数
res.extend(small * w) # 将字符重复最小次数次,添加到结果列表
return res # 返回结果列表