Поиск по этому блогу

пятница, 2 декабря 2022 г.

Задание 24 № 27689

Текстовый файл состоит не более чем из 1000000 символов X, Y и Z. Определите максимальную длину цепочки вида XYZXYZXYZ... (составленной из фрагментов XYZ, последний фрагмент может быть неполным).
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
                                    24_demo.txt

РешениеИдея  решения: ищем подстроку состоящую из "XYZ" максимальной длины и определяем позицию ее окончания. Если  следующий символ "Х", увеличиваем её длину на 1. Если затем - "Y", то ещё на 1.

# Считываем данные из файла
f=open('24_demo.txt')
s=f.readline()
c=0  # количество подстрок XYZ
m=0 # максимальное количество подстрок XYZ
p=0 # позиция окончания максимальной подстроки
i=0 # позиция очередного символа
h=1  # шаг изменения позиции очередного символа
#Поиск максимальной подстроки
while i<len(s)-2:
    if s[i]+s[i+1]+s[i+2]=='XYZ':
        c+=1
        h=3
    else:
        if m<c:
            p=i+2
            m=c
        c=0
        h=1
    i+=h
m=m*3 #длина максимальной подстроки
if s[p]=='X': #Если следующий символ Х, длина строки увеличивается 
    m+=1
    p+=1
    if s[p]=='Y': # если за ним Y увеличиваем еще на 1
        m+=1
print(m)

Комментариев нет:

Отправить комментарий