我需要帮助编写一个函数来定义两个字符串参数的出现次数。该函数返回第一个参数中的字符出现在第二个参数中的次数。
示例:occurrence('fooled','hello world')应评估为7(1'e',3'l',2'o',1'd')
需要加入'for loop'。
感谢大家的帮助,非常感谢!
答案 0 :(得分:2)
列表理解方法:
In [738]: def occurances(fst, sec):
...: return sum(sec.count(c) for c in set(fst))
In [739]: occurances('fooled','hello world')
Out[739]: 7
将其设为for循环:
def occurances(fst, sec):
osum=0
for c in set(fst):
#try it yourself :)
return osum
或者@SvenMarnach和@JayanthKoushik提到,如果不使用set
:
In [738]: def occurances(fst, sec):
...: return sum(c in fst for c in sec)
也在时间上以O(mn)运行(m,n是fst
和sec
的长度。您可以将fst
设为set
:
In [738]: def occurances(fst, sec):
...: fst=set(fst)
...: return sum(c in fst for c in sec) #checking "in set" is O(1)
答案 1 :(得分:0)
如果第一个元素出现在第二个元素中,只需使用defaultdict
并计算出现次数。然后总结所有的价值观:
from collections import defaultdict
ele_count = defaultdict(int)
def occurances(first, second):
count = 0
for ele in second:
if ele in first:
ele_count[ele] += 1
for item in ele_count.values():
count += item
print count