Поиск и замена символов в текстовом редакторе — ЕГЭ, задание 10
Коротко о главном
Задание 10 проверяет умение считать количество вхождений подстроки в текст (в том числе перекрывающихся) и понимать, как меняется длина текста при операции «найти и заменить». Ключевые навыки: отличать поиск неперекрывающихся вхождений от всех вхождений, аккуратно считать длину до и после замены, работать с граничными случаями (начало/конец строки, повторяющиеся буквы).
Определения и формулы/правила
| Понятие | Пояснение |
|---|---|
| Вхождение подстроки | Позиция в тексте, начиная с которой подряд идущие символы совпадают с искомой подстрокой |
| Неперекрывающиеся вхождения | Считаются при обычном последовательном поиске: после найденного вхождения поиск продолжается после его конца |
| Перекрывающиеся вхождения | Считаются все позиции, где подстрока встречается, даже если вхождения «накладываются» друг на друга (поиск продолжается со следующего символа) |
| Замена (Find & Replace) | Каждое найденное вхождение подстроки заменяется на подстроку . Обычно замена идёт по неперекрывающимся вхождениям слева направо |
| Длина текста после замены | где — число замен, , — длины искомой и заменяющей подстрок |
Важное правило неперекрывающегося поиска: если подстрока найдена на позиции длиной , следующий поиск начинается с позиции , а не с .
Правило перекрывающегося поиска: после нахождения вхождения на позиции следующий поиск начинается с позиции .
Как применять
Пример 1. Подсчёт неперекрывающихся вхождений.
Текст: ААААА, искомая подстрока: АА.
Ищем слева направо: позиция 1 (символы 1–2) — вхождение, следующий поиск с позиции 3: символы 3–4 — вхождение, следующий поиск с позиции 5 — символов не хватает.
Итого неперекрывающихся вхождений: 2.
Пример 2. Подсчёт перекрывающихся вхождений.
Тот же текст ААААА, та же подстрока АА.
Проверяем позиции 1,2,3,4: на каждой из них найдётся АА (1-2, 2-3, 3-4, 4-5).
Итого перекрывающихся вхождений: 4.
Пример 3. Длина текста после замены.
В тексте длиной 200 символов подстроку кот (3 символа) заменили на собака (6 символов), замена произошла 5 раз.
Типичные ошибки
- Путают перекрывающиеся и неперекрывающиеся вхождения — читайте формулировку задачи внимательно: «сколько раз встречается» обычно означает перекрывающийся поиск, «сколько раз можно заменить» — неперекрывающийся.
- Не учитывают вхождения на границах текста (в начале или конце строки).
- Забывают, что после замены длина текста меняется, и при повторном поиске в новом тексте позиции вхождений уже другие.
- Ошибаются в знаке при вычислении , если (длина текста уменьшается).
- Считают вхождения подстроки, которая сама состоит из повторяющихся символов, без учёта правила сдвига поиска (путают на сколько символов сдвигаться после находки).
Где встречается на экзамене
Тема — основа задания 10 ЕГЭ по информатике. Формулировки: «Сколько раз строка X встречается в тексте (в том числе с пересечениями/без пересечений)?», «Определите длину текста после замены всех вхождений подстроки A на подстроку B», «Сколько символов было заменено суммарно». Часто комбинируется с обработкой большого текстового файла программным способом (Python, Pascal), но в базовой формулировке достаточно ручного подсчёта по описанным правилам.
Частые вопросы
В чём разница между перекрывающимися и неперекрывающимися вхождениями?
При неперекрывающемся поиске следующее вхождение ищут после конца предыдущего (сдвиг на длину подстроки). При перекрывающемся — после каждого найденного вхождения сдвигаются всего на 1 символ, поэтому одни и те же символы текста могут входить в несколько вхождений.
Как понять, какой тип поиска использовать в задаче?
Смотрите формулировку: «сколько раз встречается подстрока» обычно подразумевает перекрывающиеся вхождения (все возможные позиции), а «сколько замен будет выполнено» — неперекрывающиеся, так как программа замены не может заменить один и тот же символ дважды подряд.
Как изменится длина текста, если заменяющая подстрока короче искомой?
Длина текста уменьшится: используйте формулу , при разница отрицательна, и итоговая длина будет меньше исходной.
Нужно ли учитывать регистр букв при поиске?
Да, если в задаче не сказано иное, поиск чувствителен к регистру: строки 'Кот' и 'кот' считаются разными подстроками.
Что делать, если подстрока для поиска состоит из одного повторяющегося символа?
Считайте вхождения по тому же правилу сдвига: для неперекрывающегося поиска сдвигайтесь на длину искомой подстроки, для перекрывающегося — на 1 символ, независимо от того, что все символы одинаковы.
Может ли замена одной подстроки создать новое вхождение другой подстроки?
Да, после замены текст меняется, и в нём могут появиться новые совпадения с искомым образцом. Обычно в задачах ЕГЭ подразумевается однократный проход по исходному тексту без повторного поиска в изменённой строке, но внимательно читайте условие.
Потренироваться: задание 10