您的位置:首页 > 编程语言 > Python开发

[leetcode: Python]290.Word Pattern

2017-05-13 17:13 155 查看
题目:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: