Количество вхождений подстроки в строку

Задача

С клавиатуры вводятся две строки. Найти количество вхождений одной (являющейся подстрокой) в другую.

Решение

В языке программирования Pascal строковая функция pos() возвращает индекс первого символа подстроки в строке. Если подстрока отсутствует, то функция возвращает 0. Функция delete() удаляет подстроку с указанной позиции на определенную длину.

Алгоритм решения задачи может быть следующим:

  1. Пусть в переменной p сохраняется индекс первого символа найденной подстроки.
  2. Если после вызова функции pos() возвращает отличное от нуля значение, значит подстрока была найдена и следует переменную-счетчик подстрок увеличить на 1.
  3. При этом удалить часть строки от первого символа на длину p (индекс первого символа уже учтенной подстроки). Эта подстрока потеряет первый символ и учитываться уже не будет.
  4. Повторять действия пп. 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

Тема

Строки

Уровень

Комбинированные задачи

Последняя редакция

Добавить комментарий