Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите максимальное количество идущих подряд символов, среди которых каждая из букв UVWXYZ встречается не более ста раз.
Приведём решение на языке Python.
s = open('24.txt').readline().strip()
d = {'U':[],'V':[],'W':[],'X':[],'Y':[],'Z':[]}
l = 0
maxi = 0
for i in range(len(s)):
if s[i] in 'UVWXYZ':
d[s[i]].append(i)
if len(d[s[i]]) > 100:
if d[s[i]][0] + 1 > l:
l = d[s[i]][0] + 1
del d[s[i]][0]
maxi = max(maxi, i - l +1)
print(maxi)
Ответ: 2844.
Приведём решение Назара Мартакова на языке Python.
s = open("24.txt").readline()
d={'U':0, 'V':0, 'W':0, 'X':0, 'Y':0, 'Z':0}
l=0
coun=0
mx=0
for r in range(len(s)):
if s[r] in d:
d[s[r]] += 1
if d[s[r]] > 100:
while s[l:r+1].count(s[r]) == 101:
l+=1
d[s[r]]-=1
coun = len(s[l:r+1])
mx = max(coun, mx)
print(mx
Приведём решение Юрия Красильникова на языке Python.
s = open('24.txt').readline().strip()
dic = {c:0 for c in 'UVWXYZ'} # количества символов
ndx = [-1]+[i for i in range(len(s)) if s[i] in dic.keys()]+[len(s)] # индексы символов
b,e,m = 0,1,0 # начало, конец, макс. длина
while True:
if max(dic.values()) <= 100:
m = max(m,ndx[e]-ndx[b]-1)
if e == len(ndx)-1: break
dic[s[ndx[e]]] += 1
e += 1
else:
b += 1
dic[s[ndx[b]]] -= 1
print(m)

