Текстовый файл состоит не более, чем из 1 200 000 символов английского алфавита.
Определите максимальное количество идущих подряд символов, среди которых символы Q, R, S в различных комбинациях (с учётом повторений) не стоят рядом.
Для выполнения этого задания следует написать программу.
Приведём решение на языке Python.
s = open('24.txt').readline()
count = mx = 1
for i in range(len(s)-1):
if s[i] not in'QRS' or s[i+1] not in'QRS':
count+= 1
mx= max(count, mx)
else:
count = 1
print(mx)
В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — 544.
Ответ: 544.
Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение Евгения Джобса на языке Python.
s = open('24.txt').readline()
# длина подходящей последовательности для s[0]
# она же – текущее максимальное значение длины
c = mx = 1
for i in range(1, len(s)):
# если хотя бы один символ s[i] и s[i-1]
# не является символами Q, R, S
if s[i-1] not in 'QRS' or s[i] not in 'QRS':
# увеличиваем текущую длину строки
c += 1
# переопределяем максимальное значение
mx = max(mx, c)
else:
# если оба символа входят в Q, R, S
# начинаем последовательность с
# текущего символа
c = 1
print(mx)
Приведём решение Юрия Красильникова на языке Python.
s = open('24.txt').readline()
p=[-1]+[i for i in range(len(s)-1) if s[i] in 'QRS' and s[i+1] in 'QRS' ]+[len(s)-1]
print(max(p[i+1]-p[i] for i in range(len(p)-1)))

