← Все вопросы

Как решать задание 24 ЕГЭ по информатике (обработка строки из файла)?

Задан 19 месяцев назад181 просмотров2 ответа
10

Задание 24 даёт файл с одной длинной строкой из букв, и надо найти, например, самую длинную цепочку подряд идущих одинаковых символов или количество каких-то подстрок. Как обрабатывать строку из файла на Python для ЕГЭ?

2 ответа

14
✓ Принятый ответ — помог автору

Задание 24 — обработка одной длинной строки из файла. Частые формулировки: «найдите длину самой длинной цепочки одинаковых символов», «сколько раз встречается двухсимвольное сочетание», «максимальная серия чередующихся букв».

Чтение:

s = open('24.txt').read().strip()

Самая длинная серия одинаковых символов:

best = cur = 1
for i in range(1, len(s)):
    if s[i] == s[i-1]:
        cur += 1
        best = max(best, cur)
    else:
        cur = 1
print(best)

Подсчёт вхождений подстроки (например 'AB'):

print(s.count('AB'))

Но учти: count не считает перекрывающиеся вхождения ('AAA' даёт одно 'AA', а не два). Если нужны перекрытия — иди циклом по i и сравнивай срезы s[i:i+2].

Частые ошибки:

  • забыть .strip() — лишний перенос строки портит подсчёт;
  • неверная инициализация счётчика серии (начинай с 1, не с 0);
  • перепутать «подряд идущие» (серия) и «всего вхождений»;
  • проблема перекрывающихся подстрок при count.

Метод стандартный — главное точно понять, что считаем: серию подряд или общее число.

5

Совет про перекрытия: если ищешь, сколько раз встречается, скажем, 'ABA' и они могут наезжать друг на друга, str.count обманет. Считай так:

cnt = sum(1 for i in range(len(s)-2) if s[i:i+3]=='ABA')

И обязательно убирай невидимые символы в конце файла через .strip() — иначе серия или подсчёт собьются на единицу. Эти две мелочи — частая причина «почти верного» ответа.

Ваш ответ

Войдите, чтобы ответить на вопрос.