leetcode 890. 查找和替换模式 Python

用模式的每个字母去当做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

猜你喜欢

转载自www.cnblogs.com/woshizhizhang/p/10149731.html