编写带有两个字符串参数的出现次数的函数定义。该函数返回第一个参数中的字符出现在第二个参数中的次数。
示例:
occurrences('fooled', 'hello world')
应评估为:
7 (1 'e', 3 'l', 2 'o', 1 'd')
我的代码在这里:
def occurrences(text1, text2):
"""Return the number of times characters from text1 occur in text2
occurrences(string, string) -> int
"""
# add your code here
ss=0
for c in set(text2):
if c in text1:
return text1.count(text2)
return ss
它说: 你的for循环应该迭代text2 错了:对于字符串' tc1h'和'返回text2中字符的字符出现的次数'你得到0.正确的答案是15。'
答案 0 :(得分:0)
def occurrences(text1, text2):
"""Return the number of times characters from text1 occur in text2
occurrences(string, string) -> int
"""
text1_dict = {char:0 for char in text1}
for char in text2:
if char in text1_dict:
text1_dict[char] += 1
return sum(list(text1_dict.values()))
我写了一个代码,用O(n)代替O(n ^ 3)来解决这个问题 它创建了text1的字符,它计算了文本2中每个字符的出现 然后它计算text2的字符并更新字典。 最后它返回值的总和(不幸的是你不能对dict值求和,所以我之前使用了list)。
答案 1 :(得分:0)
可以在一行中完成:
>>> from collections import Counter
>>> sum(Counter(c for c in 'hello world' if c in 'fooled').values())
7