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.
Example 1:
Input: pattern = "abba", str = "dog cat cat dog"
Output: true
Example 2:
Input:pattern = "abba", str = "dog cat cat fish"
Output: false
Example 3:
Input: pattern = "aaaa", str = "dog cat cat dog"
Output: false
Example 4:
Input: pattern = "abba", str = "dog dog dog dog"
Output: false
Notes:
You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.
思路:和之前的一道题比较像,可以先用split()进行字符串分割,再用zip()方法把两个字符串放到一起 ,然后用set()进行比较.
需要注意的是需要添加and后的条件,否则example4会返回True
class Solution:
def wordPattern(self, pattern, str):
"""
:type pattern: str
:type str: str
:rtype: bool
"""
l = str.split(' ')
return len(set(zip(pattern, l))) == len(set(pattern)) == len(set(l)) and len(pattern) == len(l)
还有就是用字典的方法存储键值对.最后要判断value是否有重复,
class Solution:
def wordPattern(self, pattern, str):
"""
:type pattern: str
:type str: str
:rtype: bool
"""
dic={}
strs = str.split(' ')
if len(pattern) != len(strs):
return False
for char,word in zip(pattern,strs):
if char in dic:
if dic[char] != word:
return False
else:
dic[char]=word
if len(dic.values()) != len(set(dic.values())):
return False
return True

本文深入探讨了模式匹配算法,通过具体实例展示了如何判断一个字符串是否遵循给定的模式。文章详细解释了使用split(), zip()和set()等方法进行字符串处理的技巧,以及如何利用字典来存储键值对,确保模式和字符串之间的全匹配。
715

被折叠的 条评论
为什么被折叠?



