Одним из возможных и наивных решений является использование функции python index
для определения ближайшего индекса подстроки. Оттуда вы можете просто продолжить поиск подстроки, пока не найдете точку, в которой она больше не появляется, а затем снова вызвать index
, чтобы пропустить.
Пример:
a = "abcxyzabcabcabcxyzabcxyz"
b = "abc"
curr_index = a.index(b)
longest_count = 0
current_count = 0
while curr_index < len(a):
if a[curr_index : curr_index + len(b)] == b:
curr_index += len(b)
current_count += 1
else:
if longest_count < current_count:
longest_count = current_count
try:
curr_index = a.index(b, curr_index)
except ValueError:
# Substring no longer found in string slice
break
current_count = 0
if longest_count < current_count:
longest_count = current_count
print(longest_count)
Thisпросто возвращает самый длинный повторяющийся отсчет, но не возвращает место, где он начинается. Однако добавить эту функциональность тривиально.