Advertisement
Guest User

Untitled

a guest
Jan 17th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.71 KB | None | 0 0
  1. pattern := aaba
  2. string := foofoocatfoo
  3. symbol_table := {}
  4.  
  5. void Matches(pattern, haystack, symbol_table) {
  6.   if (pattern.size() == 0 &&  haystack.size() == 0) {
  7.     return true;
  8.   }
  9.  
  10.   string v;
  11.   if (symbol_table.Contains(pattern[0])) {
  12.     v = symbol_table[pattern[0]];
  13.  
  14.     // Check if haystack starts with v.
  15.     if (HasPrefix(v, haystack)) {
  16.       return Matches(pattern[1:], haystack[v.size():], symbol_table);
  17.     }  else {
  18.       return false;
  19.     }
  20.   }
  21.  
  22.   for (int i = 0; i < haystack.size(); ++i) {
  23.     symbol_table[pattern[0]] = haystack[:i];
  24.     if (Match(pattern[1:], haystack[i:], symbol_table)) {
  25.       return true;
  26.     }
  27.   }
  28.   symbol_table[pattern[0]] = null;
  29.   return false;
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement