Разбор 24.PNG

№ 7891 (Уровень: Средний)

(Е. Фокин) Текстовый файл состоит не более чем из 106 символов и содержит только буквы латинского алфавита и десятичные цифры. Найдите максимальную длину подстроки, ограниченной с двух сторон одним и тем же символом и не содержащей этого символа между ними. В ответе укажите длину найденной строки, включая граничные символы. Например, для строки ABCDABECD ответом будет 6.

Файлы к заданию: 24.txt


Untitled

Комментарии к коду решения:

  1. from string import * - импортирует все символы и константы из модуля string, что включает в себя ascii_uppercase (заглавные буквы), digits (цифры) и другие.
  2. alphabet = digits + ascii_uppercase - объединяет цифры и заглавные буквы в одну строку и сохраняет результат в переменной alphabet.
  3. print(alphabet) - выводит на экран строку, содержащую все цифры и заглавные буквы: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".
  4. s = open('24.txt').readline() - считывает строку из файла '24.txt' и сохраняет ее в переменной s.
  5. maxi = 0 - инициализирует переменную maxi значением 0, которая будет использоваться для хранения максимальной длины строки.
  6. Цикл for a in alphabet: проходит по символам в строке alphabet.
  7. s = s.replace(f'{a}', f'{a} {a}') - заменяет каждое вхождение символа a в строке s на a a, чтобы удвоить символ.
  8. if maxi < max([len(x) for x in s.split()]): - проверяет, если текущая максимальная длина строки меньше максимальной длины из списка длин слов, то обновляет maxi и выводит текущий символ и максимальную длину.
  9. s = s.replace(f'{a} {a}', f'{a}') - заменяет удвоенные символы обратно, чтобы восстановить исходную строку.
  10. 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

Untitled

Автор статьи: @ilandroxxy