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

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

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

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

Задача 1#11771

Текстовый файл состоит не более чем из 106  символов V, D, M.

Найдите самую длинную последовательность, состоящую из рядом стоящих символов M, т.е. в последовательности VVMMVDVVVVMDMVDVVVV такой последовательностью будет MM.

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

Вложения к задаче
Показать ответ и решение
s = open("177.txt").readline()
ans = 0
count = 1
for i in range(len(s) - 1):
    if s[i] == s[i + 1] and s[i] == "M":
        count += 1
        ans = max(ans, count)
    else:
        count = 1
print(ans)

Ответ: 2

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

Задача 2#11772

Текстовый файл состоит не более чем из 106  символов V, D, M.

Найдите самую длинную последовательность, состоящую из символов M, стоящих через 1 элемент (разница в индексе равна 2), т.е. в последовательности MVDMVMM такой последовательностью будет MVD(M)V(M)M.

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

Вложения к задаче
Показать ответ и решение
s = open("Задача 8.txt").read()
maxim =  0
for i in range(2):
    count = 1
    for j in range(i, len(s) - 2, 2):
        if s[j] == s[j + 2] and s[j] == "M":
            count += 1
            maxim = max(count, maxim)
        else:
            count = 1
print(maxim)

Ответ: 6

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

Задача 3#11773

Текстовый файл состоит не более чем из 106  символов V, D, M.

Найдите длины самой длинной последовательности одинаковых элементов и самой длинной последовательности разных элементов, т.е. в последовательности MVDMVMMDM такими последовательностями будут MM и MVDMVM.

Для выполнения этого задания следует написать программу. В ответ запишите максимальные длины последовательностей через пробел.

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

ans = 0
count_1, count_2 = 1, 1
maxim_1, maxim_2 = 0, 0
for i in range(len(s) - 1):
    if s[i] == s[i + 1]:
        count_1 += 1
        count_2 = 1
        maxim_1 = max(maxim_1, count_1)
    else:
        count_2 += 1
        count_1 = 1
        maxim_2 = max(maxim_2, count_2)
print(maxim_1, maxim_2)

Ответ: 3 77

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

Задача 4#11774

Текстовый файл состоит не более чем из 106  символов V, D, M.

Найдите самую длинную последовательность, состоящую из пар разных элементов, т.е. в последовательности VVDMVDVMMVDVMDVDMMDD условию будет удовлетворять последовательность MMDD.

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

Вложения к задаче
Показать ответ и решение
f = open(’Задача 10.txt’)
s = f.read() + "+"
# плюс один символ, чтобы проверить все пары
maxim = 0
for j in range(2):
    count = 0
    for i in range(j + 1, len(s) - 1, 2):
        if s[i] == s[i - 1] :
            count += 2
            maxim = max(maxim, count)
            if s[i] == s[i + 1]:
                count = 0
        else:
            count = 0
print(maxim)

Ответ: 4

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

Задача 5#11784

Текстовый файл состоит не более чем из 106  символов латинского алфавита. Определите длину самой длинной последовательности гласных и самой длинной последовательности согласных букв в файле (буква Y - согласная). В ответе сначала указать максимальную длину последовательности гласных, затем максимальную длину последовательности согласных через пробел.

Вложения к задаче
Показать ответ и решение
s = open("24.txt").read()
gl = "AOUEI"
countgl, countsogl = 1, 1
maxgl, maxsogl = 0, 0
for i in range(len(s) - 1):
    if s[i] in gl and s[i + 1] in gl:
        countgl += 1
        maxgl = max(maxgl, countgl)
    else:
        countgl = 1
    if not(s[i] in gl or s[i + 1] in gl):
        countsogl += 1
        maxsogl = max(maxsogl, countsogl)
    else:
        countsogl = 1
print(maxgl, maxsogl)

Ответ: 8 64

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

Задача 6#19188

Текстовый файл состоит не более чем из 106  символов P, S, H, K. Определите количество троек, состоящих из подряд идущих символов таких, что в тройке хотя бы две буквы одинаковы. Для выполнения этого задания следует написать программу.

Вложения к задаче
Показать ответ и решение
f = open(’Задача 2.txt’,’r’)  
s = f.read()  
count = 0  
for i in range(len(s) - 2):  
    if s[i] == s[i+1] or s[i+1] == s[i+2] or s[i] == s[i+2]:  
        count += 1  
print(count)

Ответ: 214066

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

Задача 7#19190

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

Вложения к задаче
Показать ответ и решение
answer = 0
current_count = 1
s = open(’244.txt’).read()
for i in range(len(s) - 1):
    if (s[i] != s[i+1]):
       current_count += 1
       answer = max(answer, current_count)
    else:
        current_count = 1
print(answer)

Ответ: 61

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

Задача 8#23394

Задание выполняется с использованием файла.

Напишите программу, которая находит подстроки, целиком состоящие из букв K и имеющие длину больше 1. Рядом с этой подстрокой не должно стоять букв K так как в этом случае они тоже входят в эту подстроку. В качестве ответа запишите через пробел количество таких строк, а также максимальную длину подобной строки. (Пример: AKKKC — для данной строки ответом будет 1 3).

Вложения к задаче
Показать ответ и решение
f = open(’Задание 24.txt’)
s = f.readline()
counter = 1
ans = 0
maxim = 1
for i in range(len(s) - 1):
    if s[i] == s[i + 1] and s[i] == ’K’:
        counter += 1
    else:
        if counter != 1:
            maxim = max(maxim, counter)
            ans += 1
            counter = 1
if s[-1] == ’K’ and s[-2] == ’K’:
    ans += 1
maxim = max(maxim, counter)
print(ans, maxim)

Ответ: 128 3

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

Задача 9#25916

Задание выполняется с использованием прилагаемых файлов

Текстовом файл состоит из не более чем 106  символов, в которую могут входить заглавные буквы латинского алфавита A…Z и десятичные цифры.

Найдите длину самой длинной подцепочки, состоящей из одинаковых символов. Выведите сначала символ, из которого строится цепочка, а затем через пробел – длину этой цепочки. Если таких цепочек (максимальной длины) несколько, выведите информацию о первой встретившейся цепочке.

Вложения к задаче
Показать ответ и решение
f = open(’Zadanie_24_ejg3.txt’)
s = f.readline()
counter = 1
maxim = 0
bukva = ’’
for i in range(len(s)-1):
    if s[i] == s[i+1]:
        counter += 1
        if maxim < counter:
            maxim = counter
            bukva = s[i]
    else:
        counter = 1
print(bukva, maxim)

Ответ: S 6

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

Задача 10#25943

Задание выполняется с использованием прилагаемых файлов

Текстовый файл состоит не более чем из 106  десятичных цифр (0, 1, ... , 9).

Определите количество символов самой длинной последовательности, где не встречаются цифры 3 и 5.

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

Вложения к задаче
Показать ответ и решение
f = open(’Задание_24__f6wk.txt’)
s = f.readline()
maxim = 0
counter = 0
for i in range(len(s)):
    if s[i] != ’5’ and s[i] != ’3’:
        counter += 1
        if counter > maxim:
            maxim = counter
    else:
        counter = 0
print(maxim)

Ответ: 53

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

Задача 11#26076

Задание выполняется с использованием прилагаемых файлов

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

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

Вложения к задаче
Показать ответ и решение
s = open(’244.txt’).readline()
count = 0
ans = 0
gl = [’A’, ’E’]
for i in range(len(s)):
    if s[i] not in gl:
        count += 1
        ans = max(ans, count)
    else:
        count = 0
print(ans)

Ответ: 20

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

Задача 12#26103

Задание выполняется с использованием прилагаемых файлов

В текстовом файле находится цепочка из символов латинского алфавита A, B, C, D, E, F. Найдите длину самой длинной подцепочки, состоящей из символов A, C, D (в произвольном порядке).

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

Вложения к задаче
Показать ответ и решение
f = open(’Задание_24__h3i2.txt’)
a = f.readline()
c = 0
ans = 0
for i in range(len(a)):
    if a[i] in ’ACD’:
        c += 1
        ans = max(ans, c)
    else:
        c = 0
print(ans)

Ответ: 11

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

Задача 13#26130

Текстовый файл состоит не более чем из 106  символов @, &,#  . Определите максимальную длину цепочки, состоящей из одного символа вида @ ...@  , или # ...#  , или & ...&  . В ответе запишите полученную длину.
Для выполнения этого задания следует написать программу.

Вложения к задаче
Показать ответ и решение
file = open(’Задание_24__hi71__swy7.txt’)
a = file.readline()
symb = ’@#$’
c = [0] * 3
maxim = [0] * 3
for i in range(3):
    for j in range(len(a)):
        if a[j] == symb[i]:
            c[i] += 1
            maxim[i] = max(maxim[i], c[i])
        else:
            c[i] = 0
print(max(maxim))

Ответ: 19

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

Задача 14#26184

Задание выполняется с использованием прилагаемых файлов

В текстовом файле находится цепочка из символов, в которую могут входить заглавные буквы латинского алфавита A...Z  и десятичные цифры.

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

Длину подцепочки запишите в двоичной системе счисления

Вложения к задаче
Показать ответ и решение
def perevod(n, a):
    s = ’’
    while n != 0:
        s = str(n % a) + s
        n //= a
    return s


alp = ’QWERTYUIOPASDFGHJKLZXCVBNM’
f = open(’Задание_24__iob7.txt’)
s = f.readline()
maxim = 0
counter = 1
for i in range(len(s)-1):
    if s[i] == s[i+1]:
        counter += 1
        if counter > maxim:
            maxim = counter
            for j in range(26):
                if alp[j] == s[i]:
                    letter = s[i]
    else:
        counter = 1
print(letter, perevod(maxim, 2))

Ответ: W 100

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

Задача 15#26959

Задание выполняется с использованием прилагаемых файлов

Текстовый файл состоит не более чем из 106  символов V, D, M.

Найдите самую длинную последовательность, состоящую из рядом стоящих символов V  , т.е. в последовательности VVMMVDVVVVMDMVDVVVV такой последовательностью будет VVVV  .

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

Вложения к задаче
Показать ответ и решение
s = open(’Задание_24__odge.txt’).read()
ans = ’V’
while ans in s:
    ans += ’V’
print(len(ans) - 1)

Ответ: 2

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

Задача 16#27467

Задание выполняется с использованием прилагаемых файлов

Текстовый файл содержит последовательность из строчных и заглавных букв английского алфавита и цифр, всего не более 106  символов. Запишите в ответе наибольшую (по длине) неубывающую подпоследовательность цифр. Если таких последовательностей несколько, запишите первую из них.

Вложения к задаче
Показать ответ и решение
a = ’QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm’ # лишние символы, которые мы уберем из строки
s = open(’Задание_24__ozau__t37z.txt’).readline()
for i in a:
    s = s.replace(i,’*’) # заменяем все ненужные символы на один определенный символ
s = s.split(’*’) # разбиваем строки по *
mx_count = 1
s1 = ’’
for x in s: # проходимся по подстрокам цифр
    count = 1
    for i in range(len(x)-1): # проход по определенной подстроке
        if x[i] <= x[i+1]: # если два символа образуют неубывающую подпоследовательность
            count += 1 # увеличиваем счётчик
            if count > mx_count:
                mx_count = count # перезаписываем максимум
                s1 = x # записываем текущую строку x
        else:
            count = 1
print(s1)

Ответ: 17

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

Задача 17#28006

Задание выполняется с использованием прилагаемых файлов

Текстовый файл состоит не более чем из 106  десятичных цифр. Найдите максимальную длину последовательности, которая состоит из цифр одинаковой четности

Вложения к задаче
Показать ответ и решение
file = open("Задание_24__pstv.txt")
string = file.readline()
c = 1  # нужна длина последовательности, не количество пар, поэтому начинаем с 1
maxim = 0
for i in range(len(string) - 1):
    if int(string[i]) % 2 == int(string[i + 1]) % 2:
        c += 1
        maxim = max(maxim, c)
    else:
        c = 1
print(maxim)

Ответ: 18

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

Задача 18#28298

Текстовый файл состоит не более чем из 106  символов V, D, M.

Найдите самую длинную последовательность, состоящую из рядом стоящих символов M, т.е. в последовательности VDMVDVDMMMVDVDVV такой последовательностью будет MMM.

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

Вложения к задаче
Показать ответ и решение
file = open("Задание 24.txt")  
text = file.read()  
cur_len = 1  
max_len = 0  
for i in range(len(text) - 1):  
    if text[i] == text[i + 1] == ’M’:  
        cur_len += 1  
    else:  
        cur_len = 1  
    max_len = max(cur_len, max_len)  
print(max_len)

Ответ: 11

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

Задача 19#28299

Текстовый файл состоит не более чем из 106  символов V, D, M.

Найдите самую длинную последовательность, состоящую из символов V, стоящих через 1  элемент (разница в индексе равна 2  ), т.е. в последовательности VDVMVDMVD такой последовательностью будет (V)D(V)M(V)DMVD.

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

Вложения к задаче
Показать ответ и решение
file = open("Задание 24.txt")  
text = file.read()  
max_len_1 = cur_len_1 = 0  
for i in range(len(text) - 2):  
    if text[i] == text[i + 2] == ’V’:  
        cur_len_1 += 1  
    else:  
        cur_len_1 = 0  
    max_len_1 = max(cur_len_1, max_len_1)  
max_len_2 = cur_len_2 = 0  
for i in range(1, len(text) - 2):  
    if text[i] == text[i + 2] == ’V’:  
        cur_len_2 += 1  
    else:  
        cur_len_2 = 0  
    max_len_2 = max(cur_len_2, max_len_2)  
print(max(max_len_1, max_len_2) + 1)

Ответ: 11

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

Задача 20#29875

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

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

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

Решение 1:

s = open(’Задание_3_ДЗ.txt’).read()
count = 1
maxim = 0
for i in range(len(s) - 1):
    if (s[i] == s[i + 1] and s[i] == "B"):
        count += 1
        if (count > maxim):
            maxim = count
    else:
        count = 1
print(maxim)

Решение 2:

a = ’B’
maxim = 1
while a in s:
    a += ’B’
    maxim = len(a)
print(maxim - 1)

 

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