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:
abba
, str = dog cat cat dog
should return true.abba
, str = dog cat cat fish
should return false.aaaa
, str = dog cat cat dog
should return false.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 False for i in range(len(slst)): if pd[pattern[i]] is None: pd[pattern[i]] = slst[i] else: if pd[pattern[i]] != slst[i]: return False s = set() for i in pd: s.add(pd[i]) if len(s) != len(pd): return False return True