Текстовый файл состоит не более чем из заглавных букв латинского алфавита. Найдите количество последовательностей, каждая из которых содержит не менее 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)