[leetcode: Python]290.Word Pattern

来源:互联网 发布:项目 书籍 商务 知乎 编辑:程序博客网 时间:2024/06/07 07:16

题目:
Given a pattern and a string str, find if str follows the same pattern.

Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str.

Examples:
pattern = “abba”, str = “dog cat cat dog” should return true.
pattern = “abba”, str = “dog cat cat fish” should return false.
pattern = “aaaa”, str = “dog cat cat dog” should return false.
pattern = “abba”, str = “dog dog dog dog” should return false.
Notes:
You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.

题意:
如上所述,注意,模式只包含小写字母,分隔符是空格。

方法一:性能58ms

class Solution(object):    def wordPattern(self, pattern, str):        """        :type pattern: str        :type str: str        :rtype: bool        """        s = str.split(' ')        if len(pattern) != len(s):            return False        h = {}        mapval = []        for i in range(len(pattern)):            if pattern[i] in h:                if h[pattern[i]] != s[i]:                    return False            else:                if  s[i] in mapval:                    return False                h[pattern[i]] = s[i]                mapval.append(s[i])        return True

方法二:性能32ms

class Solution(object):    def wordPattern(self, pattern, str):        """        :type pattern: str        :type str: str        :rtype: bool        """        d = {}        d1 = {}        l = str.split(" ")        if len(l) != len(pattern):            return False        for i in range(len(pattern)):            if pattern[i] not in d:                d[pattern[i] ] = l[i]                if l[i] not in d1:                    d1[l[i]] = pattern[i]                else:                    return False            else:                if l[i] != d[pattern[i]]:                    return False        return True
0 0
原创粉丝点击