24.01 Поиск максимальной подстроки
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из заглавных букв латинского алфавита. Найдите количество
последовательностей, каждая из которых содержит не менее 15 символов, начинается и заканчивается буквой
и не
содержит букв
(кроме начальной и конечной) и букв
.
Для выполнения этого задания следует написать программу. Воспользуйтесь файлом "Задание_26_ДЗ". В ответе запишите искомое количество.
Решение 1
# Читаем содержимое файла f = open("Задание_26_ДЗ__tcm8.txt").read() # Разделяем строку по символу ’A’ ar = f.split("A") # Инициализируем счетчик подходящих подстрок count = 0 # Проверяем первую подстроку (до первого ’A’) if f[0] == ’A’: # Увеличиваем счетчик, если длина подстроки >= 13 и не содержит ’R’ count += ((len(ar[0]) >= 13) and (ar[0].count(’R’) == 0)) # Проверяем последнюю подстроку (после последнего ’A’) if f[len(f) - 1] == ’A’: # Увеличиваем счетчик, если длина подстроки >= 13 и не содержит ’R’ count += ((len(ar[len(ar) - 1]) >= 13) and (ar[len(ar) - 1].count(’R’) == 0)) # Проверяем все подстроки между первыми и последними ’A’ for i in range(1, len(ar) - 1): # Увеличиваем счетчик, если длина подстроки >= 13 и не содержит ’R’ count += ((len(ar[i]) >= 13) and (ar[i].count(’R’) == 0)) # Выводим общее количество подходящих подстрок print(count)
Решение 2
# Читаем содержимое файла s = open("Задание_26_ДЗ__tcm8.txt").read() # Инициализируем переменные flag = False # Флаг для отслеживания наличия ’A’ counter = 0 # Счетчик длины последовательности ans = 0 # Ответ — количество подходящих последовательностей # Проходим по каждому символу в строке for i in range(len(s)): if s[i] == ’A’ and flag: # Если встречаем ’A’ и флаг установлен, увеличиваем счетчик counter += 1 # Увеличиваем ответ, если длина последовательности больше 14 ans += counter > 14 flag = True # Устанавливаем флаг, что мы находимся в последовательности counter = 1 # Сбрасываем счетчик на 1 (для текущего ’A’) elif s[i] == ’A’: # Если встречаем первое ’A’, устанавливаем флаг и сбрасываем счетчик counter = 1 flag = True elif s[i] == ’R’: # Если встречаем ’R’, сбрасываем флаг (заканчиваем последовательность) flag = False else: # Увеличиваем счетчик для текущей последовательности counter += 1 # Выводим количество подходящих последовательностей print(ans)
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!