📅  最后修改于: 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]