Задача к ЕГЭ по информатике на тему «поиск максимальной подстроки» №6

Текстовый файл состоит не более чем из 106  заглавных латинских букв (A..Z). Гласными буквами считаются буквы A, E, I, O, U, Y. Текст разбит на строки различной длины. Необходимо найти строку, с самой длинной подстрокой, состоящей только из согласных букв. Если таких строк несколько, то нужно взять ту, что встретилась раньше в файле. Определите какая гласная буква встречается реже всего в данной строке (если таких букв несколько, то возьмите ту, что встречается позже в алфавите). Запишите в ответ эту букву, а затем через пробел — количество раз сколько она встречается в файле.

f = open(’24_M5.txt’)
mx = 0
temp_str = ’’#строка,в которую мы будем сохранять строку, подходящую по условию
count_A = 0
soglas = ’QWRTPSDFGHJKLZXCVBNM’
for i in range(1000):
    s = f.readline()
    c = 0
    count_A += s.count(’A’)#после того как определили букву,
    #считаем, сколько раз она встретилась в файле.
    for j in range(len(s)):
        if s[j] in soglas:#если текущий символ является согласной
            c += 1#то увеличиваем счётчик
            if c > mx:#если счётчик больше mx
                mx = c#то перезаписываем mx
                temp_str = s# в temp_str указываем текущую строку
        else:#в ином случае
            c = 0#обнуляем счётчик
d = {x:temp_str.count(x) for x in sorted(’AEUIOY’)}
#словарь, в котором в качестве ключа указана гласная буква,
#а в качестве значения - сколько раз она встречается в temp_str
print([x for x in d.keys() if d[x] == min(d.values())])#определяем букву, которая встречается реже всего
print(count_A)

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