Задание выполняется с использованием прилагаемых файлов
Текстовый файл состоит из символов S, R, O. Определите максимальную длину подстроки, состоящей из троек символов OSR или RSO. Искомая подстрока может включать только тройки OSR, только тройки RSO или содержать одновременно как тройки OSR, так и тройки RSO. Тройки не могут пересекаться.
Решение 1
s = open(’24.txt’).readline()
s += ’--’ #мусор, чтобы циклы смогли сработать до конца строк
maxim = 0
k = 0
for i in range(1, len(s), 3):
if (s[i - 1] == ’R’ and s[i] == ’S’ and s[i + 1] == ’O’) or
(s[i - 1] == ’O’ and s[i] == ’S’ and s[i + 1] == ’R’):
k += 1
maxim = max(k, maxim)
else:
k = 0
k = 0
for i in range(2, len(s), 3):
if (s[i - 1] == ’R’ and s[i] == ’S’ and s[i + 1] == ’O’) or
(s[i - 1] == ’O’ and s[i] == ’S’ and s[i + 1] == ’R’):
k += 1
maxim = max(k, maxim)
else:
k = 0
k = 0
for i in range(3, len(s), 3):
if (s[i - 1] == ’R’ and s[i] == ’S’ and s[i + 1] == ’O’) or
(s[i - 1] == ’O’ and s[i] == ’S’ and s[i + 1] == ’R’):
k += 1
maxim = max(k, maxim)
else:
k = 0
print(maxim * 3)
Решение 2
f = open("Задание_24__tlln.txt").read()
f = f.replace("OSR", "*").replace("RSO", "*")
counter = 1
maxim = 0
for i in range(len(f) - 1):
if f[i] == "*" and f[i + 1] == "*":
counter += 1
maxim = max(counter, maxim)
else:
counter = 1
print(maxim * 3)