Форум » Обработка символьных строк » 24-287 сайт Полякова » Ответить

24-287 сайт Полякова

sangria91: Добрый день! Задача из сайта Полякова 24-287 Текстовый файл 24-280.txt состоит не более чем из 106 символов и содержит только заглавные буквы латинского алфавита. Определите максимальное количество идущих подряд символов, среди которых буквы X и Y встречаются ровно по одному разу, а буква A не встречается совсем. Подскажите, почему эта программа дает неверный ответ? Когда делаю на своих примерах -все верно(((( f=open('24-280.txt') s=f.readline() s=s.split('A') m=0 for i in range(0,len(s)): if s.count('X')==1 and s.count('Y')==1: if len(s)>m: m=len(s) print(m)

Ответов - 3

Ж: [pre2] f=open('c:/24-280.txt') s=f.readline() s=s.split('A') m=0 for c in s: if c.count('X')==1 and c.count('Y')==1: if len(c)>m: m =len(c) print(m) [/pre2]

sangria91: Да, конечно, я это и имею ввиду, просто отступы здесь съехали. Этот вариант решения дает неверный ответ - 106, а верный ответ: 135.

Ж: Вы не учитываете, что после split вы получаете строки, не содержащие А, но содержащие по несколько X и Y. Ответом может случит подстрока такой строки. К примеру, одна из строк имеет вид '00000000000000x000000000000000000y0000000000000000000000000x'. Вы ее отбракуете, а в ней есть нужная подстрока '00000000000000x000000000000000000y0000000000000000000000000' [pre2] s = open('c:/24-280.txt').readline() l=[0] for i in range(len(s)): for j in range(i+max(l),len(s)): ss=s[ i:j] if 'A' not in ss and ss.count('X')==1 and ss.count('Y')==1 : if len(ss)>max(l):print(max(l),ss) l.append(len(ss)) elif 'A' in ss or ss.count('X')>1 or ss.count('Y')>1: break print(max(l)) [/pre2]




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