Форум » Обработка символьных строк » Задача 198 №24 » Ответить

Задача 198 №24

Мари: Текст задачи: 198) Текстовый файл 24-197.txt содержит строку из заглавных латинских букв X, Y и Z, всего не более чем из 106 символов. Определите максимальное количество идущих подряд троек символов X*Y или Z*Y, где * обозначает один любой символ. Моя программа: [pre2] f = open('24-197.txt') s = f.readline() s = s.replace('XXY','1') s = s.replace('XYY','1') s = s.replace('XZY','1') s = s.replace('ZYY','1') s = s.replace('ZXY','1') s = s.replace('ZZY','1') s = s.replace('X',' ') s = s.replace('Y',' ') s = s.replace('Z',' ') print(max(map(len,s.split()))) [/pre2] получилось 19, не сошлось с ответом на сайте.

Ответов - 3

Поляков: Попробуйте вот такую строку: s = "XZYYXYY" Ваш ответ 1, а на самом деле - 2.

elpov06: Здравствуйте, подскажите пожалуйста в данной строке s = "XZYYXYY" , мы считаем тройки XZY это 1, далее все же ZYY -2 так ? то есть в последовательности из 4 символов может быть 2 тройки, я правильно понимаю? Или если мы нашли тройку XZY далее смотрим YXY? Поясните пожалуйста в чем недоработка [pre2] k=0 m=0 with open('24-197.txt', 'r') as f: s=f.readline() i=0 while i <(len(s)-2): if (s[ i]=="X" and s[ i+2]=="Y" or s[ i]=="Z" and s[ i+2]=="Y") : k=k+1 m=max(k,m) i=i+3 else: k=0 i=i+1 print(m) [/pre2]

Поляков: elpov06 пишет: Или если мы нашли тройку XZY далее смотрим YXY? Именно так. Тройки не перекрываются.Поясните пожалуйста в чем недоработка Вот строка, на которой ваша программа выдает неверный ответ: s = 'XZYYZYY'. Вы поймали тройку XZY, а цепочка наибольшей длины ZYYZYY начинается с первой Z, которая уже включена в первую тройку и вы не проверяете последовательности, которые с нее начинаются.




полная версия страницы