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)

results matching ""

    No results matching ""