Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re
- import collections
- def solve(pattern, string):
- m,k = {},0
- reg = ['^']
- for c in pattern:
- if c in m:
- reg.append(f'\\{m[c]}')
- else:
- reg.append('(.+)')
- k += 1
- m[c] = k
- reg.append('$')
- m = re.compile(''.join(reg)).match(string)
- if m is None:
- return False
- g,s = m.groups(),set()
- return not any(x in s or s.add(x) for x in g)
- tests = [
- ('abab', 'redblueredblue', True),
- ('abbb', 'redblueblueblue', True),
- ('aaaa', 'asdasdasdasd', True),
- ('aabb', 'xyxabcxzyabc', False),
- ('ab', 'aa', False),
- ]
- for p,s,o in tests:
- assert solve(p,s) == o
- print('Passed!')
Add Comment
Please, Sign In to add comment