leetcode 890. 查找和替换模式 Python

本文深入探讨了一种模式匹配算法,该算法通过将模式的每个字母作为键与单词列表的相应字母进行比对,来判断单词是否符合特定模式。文章详细解释了算法的工作原理,包括如何检测不匹配的情况以及如何确保不同的键不会映射到相同的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用模式的每个字母去当做key对应单词列表的每个字母value,

如果放进dict之前检测到key已经存在,就检测Word[i][j]是否是和已经存在的value一致,不一致就代表不匹配,break检查下一个Word

还有可能不一样的key对应了一样的value,这种情况也要去掉,把dict的value去重一下,比较长度有没有变化,没有变化就代表匹配,最后输出结果。

 1 class Solution(object):
 2     def findAndReplacePattern(self, words, pattern):
 3         """
 4         :type words: List[str]
 5         :type pattern: str
 6         :rtype: List[str]
 7         """
 8         result = []
 9         a = []
10         flag = True
11         for i in range(len(words)):
12             dic = {}
13             for j in range(len(words[i])):
14                 if pattern[j] not in dic:
15                     dic[pattern[j]] = words[i][j]
16                 elif dic[pattern[j]] != words[i][j]:
17                     flag = False
18                     break
19             z = set(dic.values())
20 
21             if flag and len(z) == len(dic):
22                 result.append(words[i])
23                 a.append(dic)
24             flag = True
25         return result

 

转载于:https://www.cnblogs.com/woshizhizhang/p/10149731.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值