Python 字母不重叠

Python not overlapping letters

这是我的代码:

    a = raw_input("Haystack ")
    b = raw_input("Needle ")

    common = {}
    if len(a)<len(b):
    for letter in a:
        if letter in b:
            common[letter]= 1

    else:
      for letter in b:
         if letter in a:
            common[letter]= 1
    print (len(common))

我写了一个关于大海捞针的代码。但我似乎无法弄清楚如何将它添加到必须读取非重叠字母的代码中。例如。如果用户在 haystack "qqwwee" 和 needle "qw" 之后输入,那么它必须输出 1 而不是 2,因为 haystack 中只有一个 "qw"。

您可以在获得用户的输入后使用 count 方法

In [13]: a='qqwwee'

In [14]: 'qw' in a
Out[14]: True

In [15]: 'qwe' in a
Out[15]: False

In [16]: a='qqwweqwe'

In [17]: 'qw' in a
Out[17]: True

In [18]: a.count('qw')
Out[18]: 2

In [19]: a='qqwqqweqwe'

In [20]: a.count('qw')
Out[20]: 3

下面是您想要的代码。它将根据长度检查字符串 a 到字符串 b 的计数,反之亦然。

a = raw_input("Haystack ")
b = raw_input("Needle ")

if len(a)<len(b):
    print str(b.count(a))
else:
    print str(a.count(b))

在这种情况下,您不必遍历 b 和 a 的所有元素,因为您要搜索整个单词,而是可以使用正则表达式。

from collections import Counter
import re

a = raw_input("Haystack ")
b = raw_input("Needle ")

reg = re.compile(b)
c = Counter(word.group() for word in reg.finditer(a))
print(c)

希望对您有所帮助。