程序地带

leetcode_290. 单词规律


目录


一、题目内容


二、解题思路


三、代码


一、题目内容

给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。


这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。


示例1:


输入: pattern = "abba", str = "dog cat cat dog" 输出: true


示例 2:


输入:pattern = "abba", str = "dog cat cat fish" 输出: false


示例 3:


输入: pattern = "aaaa", str = "dog cat cat dog" 输出: false


示例 4:


输入: pattern = "abba", str = "dog dog dog dog" 输出: false


说明: 你可以假设 pattern 只包含小写字母, str 包含了由单个空格分隔的小写字母。    


二、解题思路

两个dict构成双向关系,pattern和s里的元素可互相作为键值对进行查找,如果有一个dict通过key查找的value值和当前值不对应则返回False,否则查找结束返回True。


三、代码
class Solution:
def wordPattern(self, pattern: str, s: str) -> bool:
s_split_list = s.split(' ')
pattern_list = list(pattern)
if len(s_split_list) != len(pattern_list):
return False
s_pattern_dict = {}
pattern_s_dict = {}
for i, j in zip(s_split_list, pattern_list):
if i not in s_pattern_dict:
s_pattern_dict[i] = j
if j not in pattern_s_dict:
pattern_s_dict[j] = i
if s_pattern_dict[i] != j:
return False
if pattern_s_dict[j] != i:
return False
return True
if __name__ == '__main__':
pattern = "aba"
strs = "dog dog dog dog"
s = Solution()
ans = s.wordPattern(pattern, strs)
print(ans)

悲恋花丶无心之人

CSDN认证博客专家
深度学习
神经网络
Pytorch
计算机视觉在读研究生,熟悉Pytorch,MXNet,TensorFlow,Keras等深度学习框架,主要涉及的领域有目标检测,语义分割,超分辨率重建,行人重识别等。个人GitHub网址为:https://github.com/nickhuang1996

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36556893/article/details/111246406

随机推荐

使用memcpy()时报错

找了两个小时的问题,记录一下,在ROS下usb_cam节点下添加了新的去畸变函数,并将其发布成topic,但是在实际运行的时候,有...

莫奈的三轮车 阅读(308)

Java 无锁

目录1、共享资源——无锁实现2、CAS的工作方式3、CAS和Volatile的关系4、为什么无锁效率高?5、CAS的特点1、共享资源——无锁实现packagecom.sharing_mo...

黄 坤 阅读(267)