Автор | Сообщение |
|
Отправлено: 26.04.22 21:12. Заголовок: Задача 198 №24
Текст задачи: 198) Текстовый файл 24-197.txt содержит строку из заглавных латинских букв X, Y и Z, всего не более чем из 106 символов. Определите максимальное количество идущих подряд троек символов X*Y или Z*Y, где * обозначает один любой символ. Моя программа: 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()))) получилось 19, не сошлось с ответом на сайте.
|
|
|
Ответов - 3
[только новые]
|
|
|
| Администратор
|
Сообщение: 3508
|
|
Отправлено: 26.04.22 21:19. Заголовок: Попробуйте вот такую..
Попробуйте вот такую строку: s = "XZYYXYY" Ваш ответ 1, а на самом деле - 2.
|
|
|
|
Отправлено: 03.05.22 03:28. Заголовок: Вопрос по условию к данной задаче 24 номер 198
Здравствуйте, подскажите пожалуйста в данной строке s = "XZYYXYY" , мы считаем тройки XZY это 1, далее все же ZYY -2 так ? то есть в последовательности из 4 символов может быть 2 тройки, я правильно понимаю? Или если мы нашли тройку XZY далее смотрим YXY? Поясните пожалуйста в чем недоработка 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)
|
|
|
|
| Администратор
|
Сообщение: 3521
|
|
Отправлено: 06.05.22 15:34. Заголовок: elpov06 пишет: Или е..
elpov06 пишет: цитата: | Или если мы нашли тройку XZY далее смотрим YXY? |
|
Именно так. Тройки не перекрываются. цитата: | Поясните пожалуйста в чем недоработка |
|
Вот строка, на которой ваша программа выдает неверный ответ: s = 'XZYYZYY'. Вы поймали тройку XZY, а цепочка наибольшей длины ZYYZYY начинается с первой Z, которая уже включена в первую тройку и вы не проверяете последовательности, которые с нее начинаются.
|
|
|
|