Тема 24. Обработка символьной информации
24.01 Поиск максимальной подстроки
Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка символьной информации
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#88150

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

Вложения к задаче
Показать ответ и решение
f = open(’24_M5.txt’)
mx = 0
temp_str =’’#строка, в которую мы будем сохранять подходящую по условию нам строку
glas = ’AEIUOY’
soglas = sorted(’QWERTYUIOPASDFGHJKLZXCVBNM’)#изначально создали список всех букв
count_DD = 0
for x in glas:#проходимся по строке гласных и удаляем их из списка всех букв.
    #в этом списке останутся только согласные буквы
    soglas.remove(x)
for i in range(1000):
    s = f.readline().strip()#считываем строку, функция strip убирает символ переноса строки(\n)
    ans = s# копируем значение строки в ans для того чтобы позже,
    # в случае чего, её и сохранить в temp_str
    for x in soglas:#заменяем все согласные на один какой-то символ
        s = s.replace(x,’*’)
    s = s.split(’*’)#делаем по нему сплит
    for i in range(len(s)-1):#проходимся по списку s
        if len(’*’.join(s[i:i+2])) >= mx:#если длина подстроки с ровно одной согласной больше mx
            mx = len(’*’.join(s[i:i+2]))#то перезаписываем mx
            temp_str = ans# в temp_str передаём текущую строку
    count_DD += ans.count(’DD’)
    #после определения пары мы считаем, сколько раз она встретилась во всём файле
d = {x+y:temp_str.count(x+y) for x in sorted(set(temp_str)) for y in sorted(set(temp_str))}
# c помощью словаря
#мы создаем в ключах всевозможные пары символов,
# в значениях - мы считаем сколько раз встретилась такая пара рядом стоящих символов в temp_str
print([x for x in d.keys() if d[x] == max(d.values())])#выводим пару,
# которая встретилась больше всего раз
print(count_DD)#выводим количество раз встреченных DD в файле.

Ответ: DD 6305

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное обучение
в Школково

Для детей ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Брянской областей, а также школьникам, находящимся в пунктах временного размещения Крыма обучение на платформе бесплатное.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ или олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!