Количество вхождений подстроки в строку
Задача
С клавиатуры вводятся две строки. Найти количество вхождений одной (являющейся подстрокой) в другую.
Решение
В языке программирования Pascal строковая функция pos()
возвращает индекс первого символа подстроки в строке. Если подстрока отсутствует, то функция возвращает 0. Функция delete()
удаляет подстроку с указанной позиции на определенную длину.
Алгоритм решения задачи может быть следующим:
- Пусть в переменной
p
сохраняется индекс первого символа найденной подстроки. - Если после вызова функции
pos()
возвращает отличное от нуля значение, значит подстрока была найдена и следует переменную-счетчик подстрок увеличить на 1. - При этом удалить часть строки от первого символа на длину p (индекс первого символа уже учтенной подстроки). Эта подстрока потеряет первый символ и учитываться уже не будет.
- Повторять действия пп. 1-3 пока переменная
p
не станет равной 0.
var str, s: string; count: byte; p: byte; begin readln(str); readln(s); count := 0; p := 1; while p <> 0 do begin p := pos(s,str); if p <> 0 then begin count := count + 1; delete(str,1,p); end; end; writeln(count); end.
Пример выполнения кода:
yuwiuwi67
wi
2