
可以使用 Python 解决这个问题。思路如下:
-
用
collections.Counter统计第一个单词的字符出现次数,作为初始的字符计数。 -
遍历剩余的单词,逐个更新计数,取每个字符的最小出现次数。
-
根据最终的计数构造答案列表。
下面是具体实现:
from collections import Counter
def commonChars(words):
# 初始化计数器为第一个单词的字符计数
common_count = Counter(words[0])
# 逐步与后续单词的字符计数取交集(最小值)
for word in words[1:]:
common_count &= Counter(word)
# 展平计数器,转换为字符数组
return list(common_count.elements())
# 示例
words = ["bella", "label", "roller"]
print(commonChars(words)) # 输出: ['e', 'l', 'l']
解释:
-
Counter(words[0])统计第一个单词的字符出现次数。 -
依次取与
Counter(word)的交集(&操作符),保证每个字符只取最小出现次数。 -
common_count.elements()展开字符并返回最终结果。
这种方法保证了时间复杂度大约为 O(N⋅M),其中 N 是单词数,M 是单词平均长度。
630

被折叠的 条评论
为什么被折叠?



