Найти максимальное количество идущих подряд троек символов X*Y, Z*Y
Например, для строки XXY YXZ YXX YZZ YYY (для удобства разделено на тройки) необходимо найти максимальное количество подряд идущих троек вида X?Y, Z?Y. Так, количеством может быть 2 тройки подряд или 4 тройки подряд: 2 тройки - XXY Y XZY XXY ZZYYY; 4 тройки - X XYY XZY XXY ZZY YY. Собственно, если это не учитывать (что комбинации могут быть разными), то в ответе возникает 2 тройки подряд. Как это учесть в коде и реализовать понятным, лаконичным, практичным образом? Может, через регулярки? (нижний код c похожим примером на первый взгляд понять может быть трудно)
f = open('24-197.txt')
s = f.readline()
mx = 0
l = 0
i = 0
flag = False
while i < len(s) - 2:
if s[i] in 'XZ' and s[i+2]=='Y':
l = l + 1
i = i + 3
flag = True
else:
mx = max(l, mx)
l = 0
if flag:
i = i - 2
else:
i = i + 1
flag = False
print(mx)
f.close() #->6
второе решение по вопросу:
s = 'XXYYXZYXXYZZYYY'
max_ = c = 0
for j in 0,1,2:
c = 0
for i in range(j,len(s)-2,3):
if s[i]+s[i+1]+s[i+2] in ('XZY','XXY','XYY', 'ZYY','ZXY','ZZY'):
c+=1
max_ = max(max_,c)
else:
c = 0
print("j: %d max: %d"%(j,max_))