查找text2中字符的出现次数

时间:2014-08-17 22:39:00

标签: python for-loop

编写带有两个字符串参数的出现次数的函数定义。该函数返回第一个参数中的字符出现在第二个参数中的次数。

示例:

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。'

2 个答案:

答案 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