Статья Автор: Лебедев Дмитрий

Семестровая_май_2024_Задача 6

В текстовом файле, имя которого вводится с клавиатуры, находятся строчки, представляющие из себя цепочки из символов латинского алфавита X, I, V, C, M. Найдите длину самой длинной подцепочки, не содержащей римское число 17 (XVII), но содержащей римское число сто (C).  В новый файл output.txt выведите на первой строке найденную максимальную длину, а со второй строчки выведите все найденные цепочки максимальной длины - каждая на новой строке. 

Примечание:

Содержание файла file1.txt

XXXIVXXVIIXXXXXXXV
XVIIVXXCCXXXXXXXVIXVII
CVVVIIVVVVIIICCCCCCC
IVVVIIVVVVIIIXXXXXXX

Вывод для файла file1.txt
 

20
VIIVXXCCXXXXXXXVIXVI
CVVVIIVVVVIIICCCCCCC

Для выполнения этого задания надо научиться выбирать подцепочеки с "запретом на вхождение".
Один из простых способов состоит в "удвоении"  цепочки запрета и последующем "спилитовании"
Пример: 
  • пусть строка состоит из латинских букв и надо найти "максимальную подцепочку" без abcd
  • такая "внутренняя" подцепочка в строке может выглядеть так
a bcd...........abc d
можно заметить, что этого можно достичь заменой "abcd" на "abc_bcd"  и последующему "сплитованию" по символу "_"
Отбор "максимальных подцепочек" можно произвести затратным способом:
  • Добавлять подходящие цепочки в список, проверяя, что их длина не убывает
  • Затем отобрать только максимальной длины
!!! ВНИМАНИЕ !!! При считывании строк не надо забывать про символ '\n'

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать