Created
February 12, 2015 15:50
-
-
Save gsathya/44423a64520f816af021 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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