Тема 24. Обработка символьной информации

24.02 Поиск символа/строки по частоте

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

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

Задача 1#62839

Текстовый файл состоит не более чем из 106  символов X, Y и Z.

Определите самый часто встречающийся в этом файле символ и четную максмальную длину подстроки, состоящей только из этого символа, ограниченную любыми другими символами.

Также определите самый редко встречающийся в этом файле символ и нечечтную максмальную длину подстроки, состоящей только из этого символа, ограниченную любыми другими символами.

В ответе запишите сначала первую найденную длину, затем через пробел второую.

Вложения к задаче
Показать ответ и решение
f = open(’24.txt’)
s = f.readline()  # Считываем строчку
# Определяем, сколько в ней символов X, Y и Z:
print(’X:’, s.count(’X’),
      ’Y:’, s.count(’Y’),
      ’Z:’, s.count(’Z’))
# Получаем X: 500019 Y: 333396 Z: 166585
# X - самый часто встречающийся в файле символ
# Z - самый редко встречающийся в файле символ

# Сначала найдём четную максимальную длину подстроки, состоящей из символа X
s1 = s.replace(’Y’, ’Z’)  # Заменяем все символы Y на символы Z
s1 = s1.split(’Z’)  # Разбиваем строчку по символу Z

# Каждый элемент массива s1 (строчки, состоящие из символов X, и пустые строчки)
# превращаем в их длину.
# То есть, если была строчка ’XXXXX’, то станет просто число 5.
s1 = list(map(len, s1))
mc = max([i for i in s1 if i % 2 == 0])  # Составляем массив mc только из чётных длин массива s1
                                         # и берём максимальную

# Найдём нечетную максимальную длину подстроки, состоящей из символа Z
s2 = s.replace(’Y’, ’X’)  # Заменяем все символы Y на символы X
s2 = s2.split(’X’)  # Разбиваем строчку по символу X

# Каждый элемент массива s2 (строчки, состоящие из символов Z, и пустые строчки)
# превращаем в их длину.
s2 = list(map(len, s2))
mnc = max(
    [i for i in s2 if i % 2 == 1])  # Составляем массив mnc только из нечётных длин массива s1
                                    # и берём максимальную

# Выводим найденные длины
print(mc, mnc)

Ответ: 16 7

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

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

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

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

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

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

Бесплатное онлайн-обучение

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

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

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

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

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

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

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

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