Программное решение при помощи алгоритма двух указателей:
with open('24.txt') as f:
s = f.readline()
left = 0
min_ss_ce = 10 ** 10
count_ce = 0
for right in range(len(s) - 1):
if s[right:right + 2] == 'CE':
count_ce += 1
while count_ce == 230:
min_ss_ce = min(min_ss_ce, right - left + 2)
if s[left:left + 2] == 'CE':
count_ce -= 1
left += 1
print(min_ss_ce)Ответ: 6219.
Программное решение при помощи разбиения по паре CE:
with open('24.txt') as f:
s = f.readline()
sub_strs = s.split('CE')
min_ss_ce = 10 ** 10
for i in range(len(sub_strs) - 229):
# Из полученных подстрок после разбиения берем наборы по 229 штук,
# так как минимальная подстрока с 230-ю 'CE' начинается и заканчивается данным сочетанием символов.
#
# Пример для задания на поиск минимальной подстроки с 3-мя 'CE':
# Cтрока 'CE...CE...CE' после разбиения приобретает вид массива подстрок ['...', '...'].
curr_substr = sum(len(ss) for ss in sub_strs[i:i + 229])
min_ss_ce = min(min_ss_ce, curr_substr + 2 * 230)
print(min_ss_ce)Ответ: 6219.