Задача к ЕГЭ по информатике на тему «поиск символа/строки по частоте» №1

Текстовый файл 12.txt состоит не более чем из 106  заглавных латинских букв (A..Z). Файл разбит на строки различной длины. Необходимо найти строку, содержащую самую длинную цепочку стоящих подряд одинаковых букв. Если таких строк несколько, надо взять ту, которая в файле встретилась раньше. Определите, какая буква встречается в этой строке реже всего, но присутствует. Если таких букв несколько, надо взять ту, которая стоит первой в алфавите. Запишите в ответе эту букву, а затем без пробелов и разделителей – сколько раз она во всем файле стоит перед буквой F.

f = open(’C:/2412.txt’)
a = f.readlines()

# l — текущая длина, ml — максимальная
# ms — строка с самой длинной цепочкой из одинаковых букв
l = 1
ml = 1
ms = ’’
for s in a:
    # Чтобы не было ошибочных подсчётов длины,
    # перед началом проверки новой строки сбрасываем счётчик
    l = 1
    for i in range(len(s)-1):
        if s[i] == s[i+1]:
            l += 1
            # Если цепочка на текущий момент макс. длины,
            # то сохраняем текущую строку
            if l > ml:
                ms = s
            ml = max(l, ml)
        else:
            l = 1

# Ищем букву,
# которая встречается реже в сохранённой строке
# (при этом она там должна быть)
mn = 10**10
b = ’’
abc = ’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
for j in abc:
    if ms.count(j) < mn and ms.count(j) > 0:
        mn = ms.count(j)
        b = j

# Считаем, сколько раз в файле найденная буква стоит перед F
c = 0
for s in a:
    c += s.count(b+’F’)

print(b, c)

Ответ: E1485
Оцените статью
Я решу все!