Skip to content

Instantly share code, notes, and snippets.

@gsathya
Created February 12, 2015 15:50
Show Gist options
  • Save gsathya/44423a64520f816af021 to your computer and use it in GitHub Desktop.
Save gsathya/44423a64520f816af021 to your computer and use it in GitHub Desktop.
def _word_pattern(pattern, pattern_index, input, input_index, hashmap):
if (pattern_index == len(pattern) and input_index == len(input)):
return True;
if (pattern_index == len(pattern) or input_index == len(input)):
return False
char = pattern[pattern_index]
if char in hashmap:
to_match = hashmap[char]
for i in range(len(to_match)):
if (input_index >= len(input) or input[input_index] != to_match[i]):
return False
input_index += 1
return _word_pattern(pattern, pattern_index+1, input, input_index, hashmap)
else:
flag = False
for i in range(input_index, len(input)):
# get substring to match
to_match = input[input_index:i+1]
# update hashmap
if to_match in hashmap.values():
return False
hashmap[char] = to_match
flag = flag or _word_pattern(pattern, pattern_index+1, input, i+1, hashmap)
del hashmap[char]
if flag:
return True
return False
def wordpattern(pattern, input):
if len(input) < len(pattern):
return False
hashmap = {}
ans = _word_pattern(pattern, 0, input, 0, hashmap)
if ans:
return 1
else:
return 0
p = raw_input().strip()
s = raw_input().strip()
if wordpattern(p, s):
print 1
else:
print 0
#print isSamePattern("abba", "redredredred")
#print isSamePattern("abba", "redbluebluered")
#print isSamePattern("aaaa", "redbluebluered")
#print isSamePattern("aaaa", "asdasdasdasd")
#print isSamePattern("aabb", "xyzabcxzyabc")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment