Advertisement
mikhail_dvorkin

KMP

Oct 15th, 2016
545
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.30 KB | None | 0 0
  1. int n = s.length();
  2. int[] p = new int[n + 1];
  3. p[0] = -1;
  4. for (int i = 0; i < n; i++) {
  5. int k = p[i];
  6. char c = s.charAt(i);
  7. while ((k >= 0) && (s.charAt(k) != c)) {
  8. k = p[k];
  9. }
  10. p[i + 1] = k + 1;
  11. }
  12.  
  13. p = [-1]
  14. k = -1
  15. for c in s:
  16. while k >= 0 and s[k] != c:
  17. k = p[k]
  18. k += 1
  19. p.append(k)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement