Advertisement
theo830

Untitled

Jul 11th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.60 KB | None | 0 0
  1. int find_substring(string str, string pattern) {
  2. if( str.size() == 0 || pattern.size() == 0)
  3. return 0;
  4. int failure[pattern.size()];
  5. fill( failure, failure+pattern.size(), -1);
  6.  
  7. for(int r=1, l=-1; r<pattern.size(); r++) {
  8.  
  9. while( l != -1 && pattern[l+1] != pattern[r])
  10. l = failure[l];
  11. if( pattern[l+1] == pattern[r])
  12. failure[r] = ++l;
  13. }
  14. int tail = -1;
  15. for(int i=0; i<str.size(); i++) {
  16.  
  17. while( tail != -1 && str[i] != pattern[tail+1])
  18. tail = failure[tail];
  19.  
  20. if( str[i] == pattern[tail+1])
  21. tail++;
  22.  
  23. if( tail == pattern.size()-1)
  24. return 1;
  25. }
  26. return 0;
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement