|
Отправлено: 23.05.22 20:48. Заголовок: №203
Текстовый файл 24-203.txt содержит строку из заглавных латинских букв A, B и C, всего не более чем из 10^6 символов. Определите количество подстрок длиной не менее трех символов, которые не содержали бы одновременно все три буквы A, B и C. Примечание: подстрока — это непрерывный фрагмент исходной строки. file = open('24-203.txt').read() # Для упрощения скажем, что file = 'BCAABABABAACCABAAABBAABAAACAB' fileAB = file.replace('C', ' ').split(' ') # Массив подстрок, содержащих только символы А и В: ['B', 'AABABABAA', '', 'ABAAABBAABAAA', 'AB'] fileAC = file.replace('B', ' ').split(' ') # Только А и С: ['', 'CAA', 'A', 'A', 'AACCA', 'AAA', '', 'AA', 'AAACA', ''] fileBC = file.replace('A', ' ').split(' ') # Только В и С: ['BC', '', 'B', 'B', 'B', '', 'CC', 'B', '', '', 'BB', '', 'B', '', '', 'C', 'B'] s = 0 # Просто находим подстроки, длина которых не менее трёх и увеличиваем счётчик. for i in fileAB: if len(i) >= 3: s+=1 for i in fileAC: if len(i) >= 3: s+=1 for i in fileBC: if len(i) >= 3: s+=1 print(s) Результат: 29422 Ответ на сайте: 252776 Мне кажется, я не до конца понял условие...
|
|
| Администратор
|
Сообщение: 3555
|
|
Отправлено: 24.05.22 08:49. Заголовок: Пусть file = 'BC..
Пусть file = 'BCCCA'. Здесь 5 подходящих подстрок: BCC, BCCC, CCC, CCCA, CCA. Ваша программа дает ответ 2.
|