№ 7891 (Уровень: Средний)
(Е. Фокин) Текстовый файл состоит не более чем из 106 символов и содержит только буквы латинского алфавита и десятичные цифры. Найдите максимальную длину подстроки, ограниченной с двух сторон одним и тем же символом и не содержащей этого символа между ними. В ответе укажите длину найденной строки, включая граничные символы. Например, для строки ABCDABECD ответом будет 6.
Файлы к заданию: 24.txt
Комментарии к коду решения:
from string import *
- импортирует все символы и константы из модуля string, что включает в себя ascii_uppercase (заглавные буквы), digits (цифры) и другие.alphabet = digits + ascii_uppercase
- объединяет цифры и заглавные буквы в одну строку и сохраняет результат в переменной alphabet.print(alphabet)
- выводит на экран строку, содержащую все цифры и заглавные буквы: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".s = open('24.txt').readline()
- считывает строку из файла '24.txt' и сохраняет ее в переменной s.maxi = 0
- инициализирует переменную maxi значением 0, которая будет использоваться для хранения максимальной длины строки.Цикл for a in alphabet:
проходит по символам в строке alphabet.s = s.replace(f'{a}', f'{a} {a}')
- заменяет каждое вхождение символа a в строке s на a a, чтобы удвоить символ.if maxi < max([len(x) for x in s.split()]):
- проверяет, если текущая максимальная длина строки меньше максимальной длины из списка длин слов, то обновляет maxi и выводит текущий символ и максимальную длину.s = s.replace(f'{a} {a}', f'{a}')
- заменяет удвоенные символы обратно, чтобы восстановить исходную строку.print(maxi)
- выводит на экран максимальную длину строки после прохождения всех символов алфавита.Итак, данный код удваивает символы из алфавита в строке, находит максимальную длину строки после этой операции и выводит ее на экран.
from string import *
alphabet = digits + ascii_uppercase
print(alphabet) # 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
s = open('24.txt').readline()
maxi = 0
for a in alphabet:
s = s.replace(f'{a}', f'{a} {a}')
if maxi < max([len(x) for x in s.split()]):
maxi = max([len(x) for x in s.split()])
print(a, maxi)
s = s.replace(f'{a} {a}', f'{a}')
print(maxi)
Присоединяйтесь и готовьтесь с нами: t.me/informatika_kege_itpy
Автор статьи: @ilandroxxy