Leetcode日记 290. 单词规律 给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配
- 解题思路
- 制作不易,感谢三连,谢谢啦
给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。
示例1:
输入: pattern = “abba”, s = “dog cat cat dog”
输出: true
示例 2:
输入:pattern = “abba”, s = “dog cat cat fish”
输出: false
示例 3:
输入: pattern = “aaaa”, s = “dog cat cat dog”
输出: false
提示:
1 <= pattern.length <= 300
pattern 只包含小写英文字母
1 <= s.length <= 3000
s 只包含小写英文字母和 ’ ’
s 不包含 任何前导或尾随对空格
s 中每个单词都被 单个空格 分隔
解题思路
- 一看到相互匹配就想到了字典,但又一种可能需要我们考虑
a->dog
b->dog - 这并不遵循相同的规律,但在一个字典的情况下还是会匹配成功,所以我建立了两个字典来进行匹配。
pattern = "abba"
s = "dog cat cat dog"
class Solution:
def wordPattern(self, pattern: str, s: str) -> bool:
pattern_ = list(pattern)
s_ = s.split(" ")
if len(pattern_) != len(s_) :
return False
dic1 = {}
dic2 = {}
for i in range(len(s_)) :
if s_[i] not in dic1 :
dic1[s_[i]] = pattern_[i]
else :
if dic1[s_[i]] != pattern_[i] :
return False
if pattern_[i] not in dic2 :
dic2[pattern_[i]] = s_[i]
else :
if dic2[pattern_[i]] != s_[i] :
return False
return True
a = Solution().wordPattern(pattern,s)
print(a)
- 通过,证明两个字典判断匹配的方法是可以的