Задания
Версия для печати и копирования в MS Word
Тип 24 № 64909
i

Тек­сто­вый файл со­дер­жит толь­ко за­глав­ные буквы ла­тин­ско­го ал­фа­ви­та (ABCZ). Опре­де­ли­те мак­си­маль­ное ко­ли­че­ство иду­щих под­ряд сим­во­лов, среди ко­то­рых каж­дая из букв UVWXYZ встре­ча­ет­ся не более ста раз.

За­да­ние 24

Спрятать решение

Ре­ше­ние.

При­ведём ре­ше­ние на языке 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)


Аналоги к заданию № 64909: 64954 Все