Текстовый файл содержит строку из набора A, B, C, D, E, F, всего не более чем из \(10^6\) символов. Найдите максимальное количество подряд идущих троек символов ABC, BAC, CAB, CBA, стоящих одна за другой и пересекающихся с соседними тройками одной буквой. Например, в строке BDEABCBABCABBD такие пары составляют подстроку ABCBABCAB = ABC + СBA + ABC + CAB, итого \(4\) тройки.
Решение:
Python
s = open('5262.txt').readline().strip()
dp = [0] * len(s)
if s[0:3] in ('ABC', 'BAC', 'CAB', 'CBA'):
dp[2] = 1
if s[1:4] in ('ABC', 'BAC', 'CAB', 'CBA'):
dp[3] = 1
for p in range(4, len(s)):
if s[p-2:p + 1] in ('ABC', 'BAC', 'CAB', 'CBA'):
if s[p-4:p-1] in ('ABC', 'BAC', 'CAB', 'CBA'):
dp[p] = dp[p-2] + 1
else:
dp[p] = 1
print(max(dp))
Ответ: \(47\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене