Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef vector<int> vi;
- vi z_func(string s, int n){
- vi z(n);
- for(int i = 1, l = 0, r = 0; i < n; ++i){
- if(i <= r)
- z[i] = min(z[i - 1], r - i + 1);
- while(i + z[i] < n && s[z[i]] == s[z[i] + i])
- ++z[i];
- if(i + z[i] - 1 > r)
- l = i, r = i + z[i] - 1;
- }
- return z[0] = n, z;
- }
- int main(){
- string S, S1;
- int n, m, res = 0;
- cin >> S >> S1;
- n = S.length(), m = S1.length();
- vi z = z_func(S1 + '.' + S, n + m + 1);
- for(int i = m + 1; i <= n + 1; i++)
- res += (z[i] == m);
- return cout << res, 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement