Word Pattern
这里需要的是哈希表的双向映射才能验证正确性
class Solution(object):
def wordPattern(self, pattern, str):
"""
:type pattern: str
:type str: str
:rtype: bool
"""
pattern = list(pattern)
str = str.split()
n = len(pattern)
if n != len(str):
return False
paToStr = {}
strToPa = {}
for i in xrange(n):
if pattern[i] not in paToStr and str[i] not in strToPa:
paToStr[pattern[i]] = str[i]
strToPa[str[i]] = pattern[i]
elif pattern[i] in paToStr and str[i] in strToPa:
word = paToStr[pattern[i]]
pa = strToPa[str[i]]
if word != str[i] or pa != pattern[i]:
return False
else:
return False
return True
毛子的做法非常PythonIC而且容易理解,就是对同一个词或者pattern永远找数组里面的同一个位置,如果有任何一个位置两个的值对不上那就是双向映射没有成立
class Solution(object):
def wordPattern(self, pattern, str):
"""
:type pattern: str
:type str: str
:rtype: bool
"""
p = pattern
s = str.split()
return map(p.index, p) == map(s.index, s)