📜  n 个字符串中的常用字符(1)

📅  最后修改于: 2023-12-03 15:03:08.423000             🧑  作者: Mango

n 个字符串中的常用字符

在许多编程问题中,我们需要在一组字符串中找到常用的字符。这些字符可以是某些字符串中出现的所有字符,也可以是它们共同具有的字符。

以下是一些实现方式:

实现方法
方法一

使用哈希表统计每个字符的出现次数,然后过滤出出现次数大于 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$ 是字符串的平均长度。

总结

以上两种方法都解决了在多个字符串中找到常用字符的问题。方法一使用自定义哈希表实现,代码复杂度稍高,但可以很好地掌握哈希表的应用,并且可自定义哈希表的实现方式。方法二使用内置的集合和交集方法,代码简洁明了,但可能不够灵活。具体选择哪种方法应根据实际情况而定。