vadimk772336

Untitled

Feb 11th, 2022
794
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.56 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. void prefix_func(std::string s, int n, std::vector<int>& p)
  6. {
  7.     for (int i = 1, j; i < n; ++i)
  8.     {
  9.         j = p[i - 1];
  10.         while (j > 0 && s[i] != s[j])
  11.             j = p[j - 1];
  12.  
  13.         if (s[i] == s[j])
  14.             ++j;
  15.  
  16.         p[i] = j;
  17.     }
  18. }
  19.  
  20.  
  21. int main()
  22. {
  23.     std::string s;
  24.     std::cin >> s;
  25.     int n = s.length();
  26.  
  27.     std::vector<int> p(n, 0);
  28.     prefix_func(s, n, p);
  29.  
  30.     for (int i = 0; i < n; ++i)
  31.         std::cout << p[i] << " ";
  32.  
  33.     return 0;
  34. }
  35.  
Advertisement
Add Comment
Please, Sign In to add comment