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

Задача 5464

Кузнецов: Что не так ? Кто подскажет? '''(№ 5464) Текстовый файл 24-224.txt содержит строку из символов A, B и C, всего не более чем 106 символов. Найдите максимальную длину строки, состоящей только из комбинаций BAC и СAB. Например, в строке BABABACCABCABCB такая подстрока BACCABCAB (длина 9). 72''' f=open('24-224.txt') s=f.readline()+' ' print(s) i=0 k=0 mx=0 while i<len(s): if s[i:i+3]=='BAC' or s[i:i+3]=='CAB': k+=3 i+=3 mx=max(mx,k) else: i+=1 k=0 print(mx)

Ответов - 7

Антонина: Здравствуйте. Аналогичное решение; на примере ответ 9, как и в условии; на данных из файла ответ 69 - а не 72. В чём ошибка не могу понять.

zachto: Пришлите код в нормальной разметке

Антонина: 5464


zachto: [pre2] import sys sys.stdin = open("24-224.txt") s = str(input()) maxk = 0 for i in range(len(s)): r = i cur = 0 while s[r:r + 3] == "BAC" or s[r:r + 3] == "CAB": cur += 3 r += 3 maxk = max(maxk, cur) print(maxk) [/pre2] Навскидку красиво написать не смогу. Получается, что вы берете самое первое вхождение, а не наилучшее. Контрпример: BACABCABCABBAC - ответ 12, а не 9.

Антонина: Спасибо. Ошибка понятна.

СветланаВ: f=open('24-224.txt') s=f.read() s=s.replace('BAC','000') s=s.replace('CAB','000') s=s.replace('A',' ') s=s.replace('B',' ') s=s.replace('C',' ') #print (s) s=s.split() #print(s) kk=max(s,key=len) print(kk) print(len(kk)) ВЫВОДИТ 66, а НЕ 72.... В ЧЕМ ОШИБКА, ПОДСКАЖИТЕ ПОЖАЛУЙСТА

Поляков: СветланаВ пишет: В ЧЕМ ОШИБКА, ПОДСКАЖИТЕ ПОЖАЛУЙСТА У вас цепочки BAC и CAB могут перекрываться по первой и последней букве, вы это никак не учитываете. В таких случаях эти трюки с заменой чреваты...



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