📌  相关文章
📜  算从具有出现一个给定的字符串中的所有字符给定阵列的字符串(1)

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

算法:统计给定字符串中给定数组中所有字符的出现次数
问题描述

给定一个字符串和一个字符数组,请编写一个函数来计算字符数组中所有字符在字符串中的出现次数。

示例
输入:
s = "leetcode"
chars = ['l','e','t','c','o','d']
输出:
[1,2,1,1,1,1]
解释:
字符 'l' 出现了 1 次
字符 'e' 出现了 2 次
字符 't' 出现了 1 次
字符 'c' 出现了 1 次
字符 'o' 出现了 1 次
字符 'd' 出现了 1 次
思路分析

利用哈希表来存储已经出现过的字符,并记录它们出现的次数。最后遍历数组,将每个字符出现的次数作为结果返回。

代码实现
def count_occurrences(s: str, chars: List[str]) -> List[int]:
    res = [0] * len(chars)
    hash_map = {}
    for ch in s:
        if ch not in hash_map:
            hash_map[ch] = 1
        else:
            hash_map[ch] += 1
    for i in range(len(chars)):
        if chars[i] in hash_map:
            res[i] = hash_map[chars[i]]
    return res
时间复杂度

遍历字符串的时间复杂度为O(n),遍历数组的时间复杂度为O(m),故总时间复杂度为O(n+m)。

空间复杂度

哈希表最多存储n个字符,所以空间复杂度为O(n)。

测试
assert count_occurrences('leetcode', ['l','e','t','c','o','d']) == [1, 2, 1, 1, 1, 1]