ГлавнаяЕГЭ ИнформатикаТеорияПоиск и замена символов в текстовом редакторе — ЕГЭ, задание 10

Поиск и замена символов в текстовом редакторе — ЕГЭ, задание 10

Коротко о главном

Задание 10 проверяет умение считать количество вхождений подстроки в текст (в том числе перекрывающихся) и понимать, как меняется длина текста при операции «найти и заменить». Ключевые навыки: отличать поиск неперекрывающихся вхождений от всех вхождений, аккуратно считать длину до и после замены, работать с граничными случаями (начало/конец строки, повторяющиеся буквы).

Определения и формулы/правила

Понятие Пояснение
Вхождение подстроки Позиция в тексте, начиная с которой подряд идущие символы совпадают с искомой подстрокой
Неперекрывающиеся вхождения Считаются при обычном последовательном поиске: после найденного вхождения поиск продолжается после его конца
Перекрывающиеся вхождения Считаются все позиции, где подстрока встречается, даже если вхождения «накладываются» друг на друга (поиск продолжается со следующего символа)
Замена (Find & Replace) Каждое найденное вхождение подстроки S1S_1 заменяется на подстроку S2S_2. Обычно замена идёт по неперекрывающимся вхождениям слева направо
Длина текста после замены Lnew=Lold+N⋅(len(S2)−len(S1))L_{new} = L_{old} + N\cdot(len(S_2) - len(S_1)) где NN — число замен, len(S1)len(S_1), len(S2)len(S_2) — длины искомой и заменяющей подстрок

Важное правило неперекрывающегося поиска: если подстрока найдена на позиции ii длиной kk, следующий поиск начинается с позиции i+ki+k, а не с i+1i+1.

Правило перекрывающегося поиска: после нахождения вхождения на позиции ii следующий поиск начинается с позиции i+1i+1.

Как применять

Пример 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 раз. Lnew=200+5⋅(6−3)=200+15=215L_{new} = 200 + 5\cdot(6-3) = 200+15 = 215

Типичные ошибки

  • Путают перекрывающиеся и неперекрывающиеся вхождения — читайте формулировку задачи внимательно: «сколько раз встречается» обычно означает перекрывающийся поиск, «сколько раз можно заменить» — неперекрывающийся.
  • Не учитывают вхождения на границах текста (в начале или конце строки).
  • Забывают, что после замены длина текста меняется, и при повторном поиске в новом тексте позиции вхождений уже другие.
  • Ошибаются в знаке при вычислении LnewL_{new}, если len(S2)<len(S1)len(S_2) < len(S_1) (длина текста уменьшается).
  • Считают вхождения подстроки, которая сама состоит из повторяющихся символов, без учёта правила сдвига поиска (путают на сколько символов сдвигаться после находки).

Где встречается на экзамене

Тема — основа задания 10 ЕГЭ по информатике. Формулировки: «Сколько раз строка X встречается в тексте (в том числе с пересечениями/без пересечений)?», «Определите длину текста после замены всех вхождений подстроки A на подстроку B», «Сколько символов было заменено суммарно». Часто комбинируется с обработкой большого текстового файла программным способом (Python, Pascal), но в базовой формулировке достаточно ручного подсчёта по описанным правилам.

Частые вопросы

В чём разница между перекрывающимися и неперекрывающимися вхождениями?

При неперекрывающемся поиске следующее вхождение ищут после конца предыдущего (сдвиг на длину подстроки). При перекрывающемся — после каждого найденного вхождения сдвигаются всего на 1 символ, поэтому одни и те же символы текста могут входить в несколько вхождений.

Как понять, какой тип поиска использовать в задаче?

Смотрите формулировку: «сколько раз встречается подстрока» обычно подразумевает перекрывающиеся вхождения (все возможные позиции), а «сколько замен будет выполнено» — неперекрывающиеся, так как программа замены не может заменить один и тот же символ дважды подряд.

Как изменится длина текста, если заменяющая подстрока короче искомой?

Длина текста уменьшится: используйте формулу Lnew=Lold+N⋅(len(S2)−len(S1))L_{new}=L_{old}+N\cdot(len(S_2)-len(S_1)), при len(S2)<len(S1)len(S_2)<len(S_1) разница отрицательна, и итоговая длина будет меньше исходной.

Нужно ли учитывать регистр букв при поиске?

Да, если в задаче не сказано иное, поиск чувствителен к регистру: строки 'Кот' и 'кот' считаются разными подстроками.

Что делать, если подстрока для поиска состоит из одного повторяющегося символа?

Считайте вхождения по тому же правилу сдвига: для неперекрывающегося поиска сдвигайтесь на длину искомой подстроки, для перекрывающегося — на 1 символ, независимо от того, что все символы одинаковы.

Может ли замена одной подстроки создать новое вхождение другой подстроки?

Да, после замены текст меняется, и в нём могут появиться новые совпадения с искомым образцом. Обычно в задачах ЕГЭ подразумевается однократный проход по исходному тексту без повторного поиска в изменённой строке, но внимательно читайте условие.

Потренироваться: задание 10