📅  最后修改于: 2023-12-03 15:03:08.423000             🧑  作者: Mango
在许多编程问题中,我们需要在一组字符串中找到常用的字符。这些字符可以是某些字符串中出现的所有字符,也可以是它们共同具有的字符。
以下是一些实现方式:
使用哈希表统计每个字符的出现次数,然后过滤出出现次数大于 1 的字符即为常用字符。
def common_characters(strs):
if not strs: return []
res = []
hash_map = {}
for c in strs[0]:
hash_map[c] = hash_map.get(c, 0) + 1
for key in hash_map.keys():
if all(key in s for s in strs[1:]):
res.append(key * min(hash_map[key], min(s.count(key) for s in strs[1:])))
return res
时间复杂度为 $O(nm)$,其中 $n$ 是字符串数组的长度,$m$ 是字符串的平均长度。
使用 Python 内置的集合(set)和交集(&)方法,可以直接取出所有字符串中共有的字符。
def common_characters(strs):
if not strs: return []
res = set(strs[0])
for s in strs:
res &= set(s)
return list(res)
时间复杂度为 $O(nm)$,其中 $n$ 是字符串数组的长度,$m$ 是字符串的平均长度。
以上两种方法都解决了在多个字符串中找到常用字符的问题。方法一使用自定义哈希表实现,代码复杂度稍高,但可以很好地掌握哈希表的应用,并且可自定义哈希表的实现方式。方法二使用内置的集合和交集方法,代码简洁明了,但可能不够灵活。具体选择哪种方法应根据实际情况而定。