Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <iostream>
- #include <vector>
- using namespace std;
- vector <int> prefixFunction(string text)
- {
- int k, i, len = text.length();
- vector <int> p(len);
- for(i = 1; i < len; i++)
- {
- while(k > 0 && text[i] != text[k]) k = p[k - 1];
- if(text[i] == text[k]) k++;
- p[i] = k;
- }
- return p;
- }
- int main()
- {
- string text, pattern;
- cin >> text >> pattern;
- text = pattern + '$' + text;
- vector <int> p = prefixFunction(text);
- int len = pattern.length(), i;
- for(i = 0; i < p.size(); i++) if(p[i] == len) printf("%d ", i - 2 * len);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement