Тема 24. Обработка символьной информации

24.01 Поиск максимальной подстроки

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка символьной информации
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 61#52993Максимум баллов за задание: 1

В текстовом файле 6.txt находится цепочка из символов, в которую могут входить строчные буквы латинского алфавита a…z и десятичные цифры. Найдите длину последней самой длинной подцепочки, состоящей из одинаковых символов. Выведите без пробелов и разделителей сначала символ, из которого строится цепочка, а затем – длину этой цепочки.

Вложения к задаче
Показать ответ и решение
file = open(’24.txt’)
s = file.read()
max_size = 1
max_symbol = ’’
temp_size = 1
old = ’’
for i in range(len(s)):
    if s[i] == old:
        temp_size += 1
        if temp_size >= max_size:
            max_size = temp_size
            max_symbol = old
    else:
        old = s[i]
        temp_size = 1
print(max_symbol, max_size, sep=’’)

Ответ: n6

Ошибка.
Попробуйте повторить позже

Задача 62#52994Максимум баллов за задание: 1

Текстовый файл 7.txt состоит не более чем из 106  символов. Определите максимальное количество идущих подряд символов, среди которых каждые пять подряд идущих символа различны между собой.

Вложения к задаче
Показать ответ и решение
file = open(’24.txt’)
s = file.read()
max_size = 4
temp_size = 4
for i in range(len(s)):
    if len(set(s[i:i + 5])) == 5:
        temp_size += 1
        max_size = max(max_size, temp_size)
    else:
        temp_size = 4
print(max_size)

Ответ: 29

Ошибка.
Попробуйте повторить позже

Задача 63#52995Максимум баллов за задание: 1

В текстовом файле 8.txt находится цепочка из символов, в которую могут входить заглавные буквы латинского алфавита A…Z и десятичные цифры. Найдите длину самой длинной подцепочки, состоящей из одинаковых символов. Найдите все цепочки максимальной длины. В ответе запишите: максимальную длину и все символы, из которых состоят цепочки максимальной длины, в алфавитном порядке. Все в ответе записывайте без пробелов и разделителей. Пример. Максимальная длина 3 и нашлось 3 цепочки такой длины BBB, AAA, CCC. В ответе запишем: 3ABC

Вложения к задаче
Показать ответ и решение
import string

file = open(’24.txt’)
s = file.read()
temp_size = 1
string_max_alf = ’’
# Создадим алфавит
alf = string.ascii_uppercase
count_alf = [0] * 26
old = ’’
for i in range(len(s)):
    if s[i] == old:
        temp_size += 1
        count_alf[alf.index(s[i])] = max(count_alf[alf.index(s[i])], temp_size)
    else:
        old = s[i]
        temp_size = 1
max_size = max(count_alf)
print(max_size, sep=’’, end=’’)
for i in range(len(alf)):
    if count_alf[i] == max_size:
        print(alf[i], sep=’’, end=’’)

Ответ: 7BEV

Ошибка.
Попробуйте повторить позже

Задача 64#52997Максимум баллов за задание: 1

В текстовом файле 10.txt находится цепочка из символов латинского алфавита A, B, C, D, E, F. Найдите максимальную цепочку вида BECBECB… (конец цепочки может быть неполным) и запишите в ответ длину цепочки.

Вложения к задаче
Показать ответ и решение
file = open(’10.txt’)
s = file.read()
temp_s = ’B’
while temp_s in s:
    if temp_s[-1] == ’B’:
        temp_s += ’E’
    elif temp_s[-1] == ’E’:
        temp_s += ’C’
    elif temp_s[-1] == ’C’:
        temp_s += ’B’
print(len(temp_s) - 1)

Ответ: 12

Ошибка.
Попробуйте повторить позже

Задача 65#53445Максимум баллов за задание: 1

Текстовый файл состоит из символов I, B, R и Q. Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых нет идущих подряд символов R.

Вложения к задаче
Показать ответ и решение
s = open(’24.txt’).readline()
c = mx = 1
for i in range(len(s) - 1):
    if s[i] + s[i + 1] != ’RR’:
        c += 1
        if c > mx:
            mx = c
    else:
        c = 1
print(mx)

Ответ: 197

Ошибка.
Попробуйте повторить позже

Задача 66#55610Максимум баллов за задание: 1

Текстовый файл 1.txt содержит строку из заглавных латинских букв A,B и С, всего не более чем из 106  символов. Определите максимальное количество идущих подряд троек символов BBC или AAC.

Вложения к задаче
Показать ответ и решение
f = open(’24.txt’)
s = f.readline()

#Заменяем BBC и AAC на *
s = s.replace(’BBC’,’*’).replace(’AAC’,’*’)

#Запускаем цикл,который проверяет есть ли в строке i подряд идущих троек
for i in range(len(s)):
    if ’*’*i in s:
        print(i)

Другое решение

file = open(’24.txt’)
s = file.read()
max_counter = 0
temp_counter = 0
for start_step in range(3):
    for index in range(start_step, len(s) - len(s) % 3 - 2, 3):
        if s[index:index + 3] == "BBC" or s[index:index + 3] == "AAC":
            temp_counter += 1
            max_counter = max(max_counter, temp_counter)
        else:
            temp_counter = 0
print(max_counter)

Ответ: 4

Ошибка.
Попробуйте повторить позже

Задача 67#55611Максимум баллов за задание: 1

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

Вложения к задаче
Показать ответ и решение
f = open(’2.txt’)
s = f.readline()

s = s.replace(’EF’,’E F’)
a = max(list(map(len,s.split())))
print(a)

Второй способ решения

file = open(’24.txt’)
s = file.read()
max_substring = 1
temp_substring = s[0]
for i in range(1, len(s) - 1):
    temp_substring += s[i]
    if temp_substring[len(temp_substring) - 2:] == "EF":
        temp_substring = s[i]
    max_substring = max(max_substring, len(temp_substring))
print(max_substring)

Ответ: 5295

Ошибка.
Попробуйте повторить позже

Задача 68#55612Максимум баллов за задание: 1

Текстовый файл 3.txt содержит только символы A, B, C, D, E. Определите максимальное количество идущих подряд пар символов вида согласная + гласная.

Вложения к задаче
Показать ответ и решение
f = open(’3.txt’)
s = f.readline()

a = ’BCD’
b = ’AE’

#Циклы проходятся по всем вариантам сочетания согл+гласная
for i in a:
    for j in b:
        t = i+j#записывается пара символов
        s = s.replace(t,’**’)#все найденные сочетания такого вида заменяются на **

s1 = ’*’
while s1 in s: #добавляем к s1 ’*’ пока такая подстрока есть в строке
    s1 += ’*’
print((len(s1)-1)//2) #поскольку мы считаем количество пар,а не символов,мы должны поделить длину s1 на 2 чтобы получить окончательный ответ

Второй способ решения

file = open(’24.txt’)
s = file.read()
max_count = 0
temp_count = 0
for start in range(2):
    temp_count = 0
    for index in range(start, len(s) - 1, 2):
        if s[index] in "BCD" and s[index + 1] in "AE":
            temp_count += 1
            max_count = max(max_count, temp_count)
        else:
            temp_count = 0
print(max_count)

Ответ: 9

Ошибка.
Попробуйте повторить позже

Задача 69#55613Максимум баллов за задание: 1

В текстовом файле 4.txt находится цепочка из символов, в которую могут входить строчные буквы латинского алфавита a…z и десятичные цифры. Определите максимальное количество идущих подряд троек символов вида «цифра+буква+цифра».

Вложения к задаче
Показать ответ и решение
f = open(’4.txt’)
s = f.readline()

a1 = ’abcdefghijklmnoqrstuvwxyz’
a2 = ’0123456789’

for i in a2:
    for j in a1:
        for k in a2:
            t = i+j+k
            s = s.replace(t,’*’)
t = ’’
while t in s:
    t += ’*’
print(len(t)-1)

Второй способ решения

file = open(’24.txt’)
s = file.read()
numbers = ’0123456789’
max_count = 0
temp_count = 0
for start in range(3):
    for index in range(start, len(s) - 2, 3):
        if s[index] in numbers and s[index + 1] not in numbers and s[index + 2] in numbers:
            temp_count += 1
            max_count = max(max_count, temp_count)
        else:
            temp_count = 0
print(max_count)

Ответ: 6

Ошибка.
Попробуйте повторить позже

Задача 70#55614Максимум баллов за задание: 1

В текстовом файле 5.txt находится цепочка из символов латинского алфавита A, B, C, D, E. Необходимо найти длину самой длинной подцепочки символов, в которой нет буквы С.

Вложения к задаче
Показать ответ и решение
f = open(’5.txt’)
s = f.readline()

s = s.replace(’C’,’ ’)
a = max(map(len,s.split()))
print(a)

Второй способ решения

file = open(’24.txt’)
s = file.read()
max_substring = 0
temp_substring = 0
for i in range(len(s)):
    if s[i] != ’C’:
        temp_substring += 1
        max_substring = max(max_substring, temp_substring)
    else:
        temp_substring = 0
print(max_substring)

Ответ: 59

Ошибка.
Попробуйте повторить позже

Задача 71#55616Максимум баллов за задание: 1

Текстовый файл 7.txt содержит только заглавные буквы латинского алфавита (ABC...Z). Определите максимальное количество идущих подряд символов, среди которых нет пар символов и AG и TN одновременно.

Вложения к задаче
Показать ответ и решение
f = open(’24_5.txt’)
s = f.readline()

a = max(map(len,s.replace(’AG’,’A G’).split())) #без пары AG
b = max(map(len,s.replace(’TN’,’T N’).split())) #без пары TN

print(max(a,b))

Второй способ решения

s = open(’24_5.txt’).readline()
c = mx = 1
count_AG = 0
count_TN = 0
for i in range(len(s)-1):
    if s[i] + s[i+1] != ’AG’ and s[i] + s[i+1] != ’TN’:
        c += 1
        mx = max(mx,c)
    if s[i] + s[i+1] == ’AG’:
        if count_TN == 0:
            c += 1
            count_AG += 1
            mx = max(mx,c)
        else:
            mx = max(mx,c)
            c = 1
            count_AG = 0
            count_TN = 1
    if s[i] + s[i + 1] == ’TN’:
        if count_AG == 0:
            c += 1
            count_TN += 1
            mx = max(mx, c)
        else:
            mx = max(mx, c)
            c = 1
            count_AG = 1
            count_TN = 0
print(mx)

Ответ: 5830

Ошибка.
Попробуйте повторить позже

Задача 72#55617Максимум баллов за задание: 1

В текстовом файле 8.txt находится цепочка из символов латинского алфавита L, D, R. Найдите максимальную длину строки, состоящей только из комбинаций LRD и DRL.

Искомая подстрока может включать только комбинацию LRD, только комбинацию DRL или содержать одновременно как комбинацию LRD, так и комбинацию DRL. Комбинации не могут пересекаться.

Вложения к задаче
Показать ответ и решение
f = open(’8.txt’)
s = f.readline()

s = s.replace(’LRDRL’,’LRD DRL’).replace(’DRLRD’,’DRL LRD’)
s = s.replace(’LRD’,’***’).replace(’DRL’,’***’)
for i in range(len(s)):
    if ’*’*i in s:
        print(i)

Второй способ решения

file = open(’24.txt’)
s = file.read()
max_size = 0
for start in range(3):
    temp_count = 0
    for i in range(start, len(s) - 2, 3):
        if s[i:i + 3] == "LRD" or s[i:i + 3] == "DRL":
            temp_count += 1
            max_size = max(max_size, temp_count * 3)
        else:
            temp_count = 0
print(max_size)

Ответ: 12

Ошибка.
Попробуйте повторить позже

Задача 73#55618Максимум баллов за задание: 1

В текстовом файле 9.txt находится цепочка из символов латинского алфавита X, Y, Z. Найдите длину самой длинной подцепочки, состоящей из символов Y.

Вложения к задаче
Показать ответ и решение
f = open(’9.txt’)
s = f.readline()

s = s.replace(’X’,’ ’).replace(’Z’,’ ’)
a = max(list(map(len,s.split())))
print(a)

Второй способ решения

file = open(’24.txt’)
s = file.read()
max_size = 0
temp_size = 0
for i in range(len(s)):
    if s[i] == ’Y’:
        temp_size += 1
        max_size = max(max_size, temp_size)
    else:
        temp_size = 0
print(max_size)

Ответ: 10

Ошибка.
Попробуйте повторить позже

Задача 74#55619Максимум баллов за задание: 1

В текстовом файле 10.txt находится цепочка из символов латинского алфавита A, B, C, D, E, F. Определите максимальное количество идущих подряд символов, среди которых нет подстроки СDEF.

Вложения к задаче
Показать ответ и решение
f = open(’10.txt’)
s = f.readline()

s = s.replace(’CDEF’,’CDE DEF’)
a = max(list(map(len,s.split())))
print(a)

Второй способ решения

file = open(’24.txt’)
s = file.read()
max_size = 0
temp_string = ’’
for i in range(len(s)):
    temp_string += s[i]
    if temp_string[len(temp_string) - 4:] == "CDEF":
        max_size = max(max_size, len(temp_string) - 1)
        temp_string = "DEF"
print(max_size)

Ответ: 16095

Ошибка.
Попробуйте повторить позже

Задача 75#56460Максимум баллов за задание: 1

Текстовый файл 24.txt состоит из символов X, Y и Z. Определите максимальную длину подпоследовательности подряд идущих символов, состоящих из четверок вида гласная + согласная + согласная + гласная

Например, для строки XYXXYYZZYZYXXYZ искомая подпоследовательность YXXYYZZY и её длина равна 8.

Вложения к задаче
Показать ответ и решение
file = open(’24.txt’)
s = file.read()
gl = ’Y’
sogl = "XZ"
temp_count = 0
max_count = 0
for start in range(4):
    for i in range(start, len(s) - 3, 4):
        if (s[i] in gl) and (s[i + 1] in sogl) and (s[i + 2] in sogl) and (s[i + 3] in gl):
            temp_count += 1
            max_count = max(max_count, temp_count)
        else:
            temp_count = 0
print(max_count * 4)

Ответ: 16

Ошибка.
Попробуйте повторить позже

Задача 76#57115Максимум баллов за задание: 1

Текстовый файл 24.1.txt состоит из символов A, C, D, F и O. Определите максимальное количество идущих подряд пар символов вида гласная + согласная

Для выполнения этого задания следует написать программу.

Вложения к задаче
Показать ответ и решение
file = open(’24.1.txt’)
s = file.read()
max_count = 0
for start in range(2):
    temp_count = 0
    for i in range(start, len(s) - 1, 2):
        if s[i] in "AO" and s[i + 1] in "CDF":
            temp_count += 1
            max_count = max(max_count, temp_count)
        else:
            temp_count = 0
print(max_count)

 

Ответ: 95

Ошибка.
Попробуйте повторить позже

Задача 77#57116Максимум баллов за задание: 1

Текстовый файл 24.2.txt состоит не более чем из 106  символов арабских цифр (0,1,...,9)  . Определите максимальное количество идущих подряд четверок символов вида: нечетная цифра + четная цифра + нечетная цифра + четная цифра в прилагаемом файле.

Для выполнения этого задания следует написать программу.

Примечание: цифра 0 является чётной.

Вложения к задаче
Показать ответ и решение
file = open(’24.2.txt’)
s = file.read()
even = "02468"
odd = "13579"
max_count = 0
for start in range(4):
    temp_count = 0
    for i in range(start, len(s) - 3, 4):
        if s[i] in odd and s[i + 1] in even and s[i + 2] in odd and s[i + 3] in even:
            temp_count += 1
            max_count = max(max_count, temp_count)
        else:
            temp_count = 0
print(max_count)

 

Ответ: 4

Ошибка.
Попробуйте повторить позже

Задача 78#57118Максимум баллов за задание: 1

Текстовый файл 24.4.txt состоит из символов латинского алфавита. Найдите подстроку наибольшей длины, состоящую из двух различных символов, которые чередуются. В качестве ответа укажите её длину.

Для выполнения этого задания следует написать программу.

Вложения к задаче
Показать ответ и решение
file = open(’24.4.txt’)
s = file.read()
temp_count = 2
max_count = 2
last_symbol = ’’
do_last_symbol = ’’
for i in range(len(s)):
    if s[i] == do_last_symbol:
        if do_last_symbol != last_symbol:
            temp_count += 1
            max_count = max(max_count, temp_count)
    else:
        temp_count = 2
    do_last_symbol = last_symbol
    last_symbol = s[i]
print(max_count)

 

Ответ: 9

Ошибка.
Попробуйте повторить позже

Задача 79#57290Максимум баллов за задание: 1

Текстовый файл состоит не более чем из 106  символов L, D и R. Определите максимальную длину цепочки вида LDRLDRLDR... (составленной из фрагментов LDR, последний фрагмент может быть неполным). В ответе запишите только число.

Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Вложения к задаче
Показать ответ и решение
s = open(’24.txt’).readline()
ans = ’’
while ans in s: #Пока наша подстрока есть в файле, мы её наращиваем
    ans += ’LDR’
while ans not in s:#Убираем по символу из подстроки, пока она вновь не будет подстрокой файла
    ans = ans[:-1]
print(len(ans))

Ответ: 15

Ошибка.
Попробуйте повторить позже

Задача 80#58624Максимум баллов за задание: 1

Текстовый файл 1-3.txt состоит не более чем из 106  заглавных латинских букв (A..Z). Текст разбит на строки различной длины. Определите количество строк, в которых буква K встречается реже, чем буква O.

Вложения к задаче
Показать ответ и решение
f = open(’D:/1-3.txt’)
a = f.readlines()
c = 0
for s in a:
    if s.count(’K’) < s.count(’O’):
        c += 1
print(c)

Ответ: 455
Рулетка
Вы можете получить скидку в рулетке!