LeetCode----Word Pattern

来源:互联网 时间:1970-01-01

Word Pattern

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.

分析:

按模式匹配给定字符串。

我的做法是,先讲模式如“aabb”,构造成模式字典pd={'a':None, 'b':None}。再将给定串如“dog dog cat cat”按空格切分。然后,按顺序去对应串和字典中键,如果不匹配则不符合该模式。最后,再判断字典中不同键值对应的串是否相同,如果相同,也不符合该模式。

代码:

class Solution(object): def wordPattern(self, pattern, str):""":type pattern: str:type str: str:rtype: bool"""pd = dict(map(lambda a: (a, None), list(pattern)))slst = str.split()if len(pattern) != len(slst): return Falsefor i in range(len(slst)): if pd[pattern[i]] is None:pd[pattern[i]] = slst[i] else:if pd[pattern[i]] != slst[i]: return Falses = set()for i in pd: s.add(pd[i])if len(s) != len(pd): return Falsereturn True



相关阅读:
Top