calccrypto calccrypto - 4 months ago 28
Python Question

string count with overlapping occurrences

What's the best way to count the number of occurrences of a given string, including overlap in python? is it the most obvious way:

def function(string, str_to_search_for):
count = 0
for x in xrange(len(string) - len(str_to_search_for) + 1):
if string[x:x+len(str_to_search_for)] == str_to_search_for:
count += 1
return count


function('1011101111','11')
returns 5


?

or is there a better way in python?

Answer

Well, this might be faster since it does the comparing in C:

def occurrences(string, sub):
    count = start = 0
    while True:
        start = string.find(sub, start) + 1
        if start > 0:
            count+=1
        else:
            return count
Comments