class StringUtil:
def __init__(self, s):
self.string = s
def count(self,substring,start=0, end=-1): # end index/slice: -1 for the last, instead len(self.substring) - 1
self.substring = substring
self.start = start
self.end = end
self.queue = 0
self.counter = 0
for a in self.string[start:]:
if a == self.substring[0]:
self.queue += 1
if a == self.substring[end] and self.queue != 0: # -1 for the last, instead len(self.substring) - 1
self.queue -= 1
self.counter += 1
return self.counter
sub = "o*o"
s = "Hell" + sub + " W" + sub + "rld"
cnt = StringUtil(s).count(sub)
print(f" counted '{sub}' in '{s}' times: {cnt}")
Y2xhc3MgU3RyaW5nVXRpbDoKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcyk6CiAgICAJc2VsZi5zdHJpbmcgPSBzCgkKCQogICAgZGVmIGNvdW50KHNlbGYsc3Vic3RyaW5nLHN0YXJ0PTAsIGVuZD0tMSk6ICAjIGVuZCBpbmRleC9zbGljZTogLTEgZm9yIHRoZSBsYXN0LCBpbnN0ZWFkIGxlbihzZWxmLnN1YnN0cmluZykgLSAxCiAgICAgICAgc2VsZi5zdWJzdHJpbmcgPSBzdWJzdHJpbmcKICAgICAgICBzZWxmLnN0YXJ0ID0gc3RhcnQKICAgICAgICBzZWxmLmVuZCA9IGVuZAogICAgICAgIHNlbGYucXVldWUgPSAwCiAgICAgICAgc2VsZi5jb3VudGVyID0gMAoKICAgICAgICBmb3IgYSBpbiBzZWxmLnN0cmluZ1tzdGFydDpdOgogICAgICAgICAgICBpZiBhID09IHNlbGYuc3Vic3RyaW5nWzBdOgogICAgICAgICAgICAgICAgc2VsZi5xdWV1ZSArPSAxCiAgICAgICAgICAgIGlmIGEgPT0gc2VsZi5zdWJzdHJpbmdbZW5kXSBhbmQgc2VsZi5xdWV1ZSAhPSAwOiAgIyAtMSBmb3IgdGhlIGxhc3QsIGluc3RlYWQgbGVuKHNlbGYuc3Vic3RyaW5nKSAtIDEKICAgICAgICAgICAgICAgIHNlbGYucXVldWUgLT0gMQogICAgICAgICAgICAgICAgc2VsZi5jb3VudGVyICs9IDEKICAgICAgICAKICAgICAgICByZXR1cm4gc2VsZi5jb3VudGVyCgoKc3ViID0gIm8qbyIKcyA9ICAiSGVsbCIgKyBzdWIgKyAiIFciICsgc3ViICsgInJsZCIKY250ID0gU3RyaW5nVXRpbChzKS5jb3VudChzdWIpCnByaW50KGYiIGNvdW50ZWQgJ3tzdWJ9JyBpbiAne3N9JyB0aW1lczoge2NudH0iKQ==