这为什么将输出设为1而不是2:
string = "ABCDCDC"
print(string.count("CDC"))
而且,由于这不起作用,在这种情况下如何获得2?
答案 0 :(得分:1)
您可以使用正则表达式计算重叠的子字符串:
import re
string = "ABCDCDC"
print(len(re.findall('(?=CDC)', string))) # 2
答案 1 :(得分:0)
这是一种算法解决方案
string = "ABCDCDC"
sub_string = "CDC"
count = 0
for i in range(len(string)):
if string[i:len(sub_string)+i] == sub_string:
count += 1
print count
答案 2 :(得分:0)
import re
print([m.start() for m in re.finditer('(?=CDC)', 'ABCDCDC')])
这应该找到所有可能重叠的事件
答案 3 :(得分:0)
您可以尝试以下简单方法:
def overlapping_count(string, seek):
seek_len = len(seek)
return sum(c == seek[0] and string[i:i + seek_len] == seek
for i, c in enumerate(string))
string = "ABCDCDC"
print(overlapping_count(string, "CDC"))