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

Текстовый файл состоит не более чем из 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
Оцените статью
Я решу все!