使用for循环在两个字符串中出现的次数

时间:2014-03-03 08:37:30

标签: python for-loop

我需要帮助编写一个函数来定义两个字符串参数的出现次数。该函数返回第一个参数中的字符出现在第二个参数中的次数。

示例:occurrence('fooled','hello world')应评估为7(1'e',3'l',2'o',1'd')

需要加入'for loop'。


感谢大家的帮助,非常感谢!

2 个答案:

答案 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是fstsec的长度。您可以将fst设为set

,使其为O(m + n)
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