Guest User

Untitled

a guest
May 20th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.55 KB | None | 0 0
  1. int back[MAXN];
  2. string S, P;
  3.  
  4. void kmpPreprocess() {
  5. int j = -1;
  6. back[0] = -1;
  7. for (int i = 0; i < P.size(); i++) {
  8. while (j >= 0 && P[i] != P[j])
  9. j = back[j];
  10. j++;
  11. back[i + 1] = j;
  12. }
  13. }
  14.  
  15. vector<int> kmpSearch(string S) {
  16. vector<int> res;
  17. int j = 0;
  18. for (int i = 0; i < S.size(); i++) {
  19. while (j >= 0 && S[i] != P[j])
  20. j = back[j];
  21. j++;
  22. if (j == P.size()) {
  23. res.push_back(i - P.size() + 1);
  24. j = back[j];
  25. }
  26. }
  27. return res;
  28. }
Add Comment
Please, Sign In to add comment