Подсчет вхождений подстроки X перед каждым вхождением подстроки Y в данной строке

Опубликовано: 22 Сентября, 2022

Даны три строки S , X и Y , состоящие из N , A и B символов соответственно, задача состоит в том, чтобы найти количество вхождений подстроки X перед каждым вхождением подстроки Y в данной строке S .

Примеры:

Input S = ”abcdefdefabc”, X = ”def”, Y = ”abc”
Output: 0 2
Explanation:
First occurrence of Y(= “abc”): No of occurrences of X(= “def”) = 0.
Second occurrence of Y: No of occurrences of X = 0.

Input: S = ”accccbbbbbbaaa”, X = ”a”, Y = ”b”
Output: 0 6 6 6

Подход: выполните следующие шаги, чтобы решить проблему:

  • Инициализируйте переменную, скажем, count , которая хранит общее количество вхождений X.
  • Пройдите по заданной строке S и выполните следующие шаги:
    • Если подстрока в диапазоне [i, B] равна Y , тогда счетчик увеличивается на 1 .
    • Если подстрока в диапазоне [i, A] равна X , тогда выведите значение count как результирующее количество строки Y перед текущим вхождением строки X .

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(N*(A + B)), так как мы используем цикл для прохождения N раз и используем встроенную функцию подстроки, которая будет стоить нам O(A+B) времени.
Вспомогательное пространство: O(1), так как мы не используем дополнительное пространство.