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