Текстовый файл состоит не более чем из 107 символов и содержит только заглавные буквы латинского алфавита и десятичные цифры. Назовём «числом» непустую непрерывную подпоследовательность цифр, ограниченную буквами по обеим сторонам. Найдите минимальную длину подстроки, содержащую не менее K = 10 000 «чисел». В ответе укажите длину найденной строки.
Например, в строке AC12BDE3F2ED6 всего три
Приведем решение на языке Python.
s = open('24 (8).txt').readline()
buk = 'QWERTYUIOPASDFGHJKLZXCVBNM'
mini = 10**10
pos = []
i = 0
while i < len(s):
if s[i] not in buk and s[i-1] in buk:
pos.append(i - 1)
while s[i] not in buk:
i += 1
if len(pos) >= 10000:
mini = min(mini, i - pos[-10000] + 1)
i += 1
print(mini)
Ответ: 68613.
Приведем решение Юрия Красильникова на языке Python.
s = open('24.txt').readline().strip()
k = 10000
b = [i-1 for i in range(1,len(s)) if s[i-1].isalpha() and s[i].isdigit()]
e = [i for i in range(1,len(s)) if s[i-1].isdigit() and s[i].isalpha()]
if e[0] <= b[0]: e.pop(0)
print(min([e[i+k-1]-b[i]+1 for i in range(len(e)-k+1)]))

