24.01 Поиск максимальной подстроки
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из символов V, D, M.
Найдите самую длинную последовательность, состоящую из рядом стоящих символов M, т.е. в последовательности VVMMVDVVVVMDMVDVVVV такой последовательностью будет MM.
Для выполнения этого задания следует написать программу. В ответ запишите длину искомой последовательности.
# Читаем весь текст из файла s = open("177.txt").readline() # Здесь будем хранить самую длинную цепочку из M ans = 0 # Счетчик для текущей цепочки M count = 1 # Проходим по всем символам в тексте for i in range(len(s) - 1): # Если два подряд идущих символа - это M if s[i] == s[i + 1] and s[i] == "M": count += 1 # Увеличиваем счетчик цепочки # Запоминаем максимальную длину if count > ans: ans = count else: # Цепочка прервалась - начинаем считать заново count = 1 # Выводим ответ - длину самой длинной цепочки M print(ans)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из символов 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)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из символов V, D, M.
Найдите длины самой длинной последовательности одинаковых элементов и самой длинной последовательности разных элементов, т.е. в последовательности MVDMVMMDM такими последовательностями будут MM и MVDMVM.
Для выполнения этого задания следует написать программу. В ответ запишите максимальные длины последовательностей через пробел.
s = open("Задача 9.txt").read() 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)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из символов 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)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из символов латинского алфавита. Определите длину самой длинной
последовательности гласных и самой длинной последовательности согласных букв в файле (буква 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)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из символов P, S, H, K. Определите количество троек, состоящих из подряд
идущих символов таких, что в тройке хотя бы две буквы одинаковы. Для выполнения этого задания следует написать
программу.
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)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из символов 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)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием файла.
Напишите программу, которая находит подстроки, целиком состоящие из букв 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)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
В текстовом файле находится цепочка из не более чем символов, в которую могут входить заглавные буквы
латинского алфавита A…Z и десятичные цифры. Найдите длину самой длинной подцепочки, состоящей из различных
символов. Выведите сначала символы, из которых строится цепочка, а затем через пробел — длину этой
цепочки. Если таких цепочек (максимальной длины) несколько, выведите информацию о первой встретившейся
цепочке.
file = open("Задание_24__looa.txt") text = file.readline() string = "" s = "" for i in range(len(text)): if text[i] not in s: s += text[i] if len(s) > len(string): string = s else: # Новая строчка - начиная со следующего после символа, равного text[i] s = s[s.find(text[i]) + 1:] + text[i] print(string, len(string))
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Текстовом файл состоит из не более чем символов, в которую могут входить заглавные буквы латинского
алфавита A…Z и десятичные цифры.
Найдите длину самой длинной подцепочки, состоящей из одинаковых символов. Выведите сначала символ, из которого строится цепочка, а затем через пробел – длину этой цепочки. Если таких цепочек (максимальной длины) несколько, выведите информацию о первой встретившейся цепочке.
# Открываем файл и читаем первую строку f = open(’Zadanie_24_ejg3.txt’) s = f.readline() # counter - счетчик длины текущей цепочки counter = 1 # maxim - максимальная длина найденной цепочки maxim = 0 # bukva - символ, из которого состоит самая длинная цепочка 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)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Текстовый файл состоит не более чем из десятичных цифр (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)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
В текстовом файле находится цепочка из символов латинского алфавита 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)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
В текстовом файле находится цепочка из символов латинского алфавита 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)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из символов
. Определите максимальную длину цепочки,
состоящей из одного символа вида
, или
, или
. В ответе запишите полученную длину.
Для выполнения этого задания следует написать программу.
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))
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
В текстовом файле находится цепочка из символов, в которую могут входить заглавные буквы латинского алфавита
и десятичные цифры.
Найдите длину самой длинной подцепочки, состоящей из одинаковых символов. Если в файле несколько подцепочек одинаковой длины, нужно взять первую из них. Выведите сначала символ, из которого строится эта подцепочка, а затем через пробел – длину этой подцепочки.
Длину подцепочки запишите в двоичной системе счисления
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))
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Текстовый файл состоит не более чем из символов
Найдите самую длинную последовательность, состоящую из рядом стоящих символов , т.е. в последовательности
такой последовательностью будет
.
Для выполнения этого задания следует написать программу. В ответ запишите длину искомой последовательности.
s = open(’Задание_24__odge.txt’).read() ans = ’V’ while ans in s: ans += ’V’ print(len(ans) - 1)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Текстовый файл содержит последовательность из строчных и заглавных букв английского алфавита и цифр, всего не
более символов. Запишите в ответе наибольшую (по длине) неубывающую подпоследовательность цифр. Если таких
последовательностей несколько, запишите первую из них.
Решение через цикл:
Считаем файл. Заменим все буквы на звёзды и разделим по ним строки, таким образом у нас остались лишь непрерывные последовательности цифр. Пройдёмся по каждой последовательности и найдём максимальную неубывающую. Если нашлась последовательность больше, чем была ранннее - вырезаем её и записываем в переменную. Остаётся вывести полученную строку.
# Все буквы английского алфавита (заглавные и строчные) a = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm" # Читаем строку из файла s = open("24ege.txt").readline() # Заменяем все буквы на звездочки for i in a: s = s.replace(i, "*") # Разбиваем строку на части по звездочкам - получаем список из цифровых последовательностей s = s.split("*") # mx_count - максимальная длина неубывающей последовательности mx_count = 1 # s1 - самая длинная неубывающая последовательность цифр s1 = "" # Проходим по каждой цифровой последовательности for x in s: # count - счетчик длины текущей неубывающей последовательности 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[i + 2 - count:i + 2] else: # Последовательность нарушилась - сбрасываем счетчик count = 1 # Выводим первую самую длинную неубывающую последовательность цифр print(s1)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Текстовый файл состоит не более чем из десятичных цифр. Найдите максимальную длину последовательности,
которая состоит из цифр одинаковой четности
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)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из символов V, D, M.
Найдите самую длинную последовательность, состоящую из рядом стоящих символов M, т.е. в последовательности VDMVDVDMMMVDVDVV такой последовательностью будет MMM.
Для выполнения этого задания следует написать программу. В ответ запишите длину искомой последовательности.
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)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из символов V, D, M.
Найдите самую длинную последовательность, состоящую из символов V, стоящих через элемент (разница в индексе
равна
), т.е. в последовательности VDVMVDMVD такой последовательностью будет (V)D(V)M(V)DMVD.
Для выполнения этого задания следует написать программу. В ответ запишите длину искомой последовательности.
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)