JZX轻语:简
LeetCode 890 - 查找和替换模式
发表于2024年05月21日
哈希表的应用题,对于每个单词word
,使用一个哈希表记录同个位置word
字母到pattern
字母的映射,如果发现某个字母已存在映射且先前指向不一样的字母,则不满足要求。此外,由于要求双射,即word
中的不同字母也不能指向同一个pattern
字母,可以比较哈希表中键与值的非重复值数量,如果相同,意味着是一对一的双射,否则存在多对一的情况,不满足要求。
class Solution:
def findAndReplacePattern(self, words: List[str], pattern: str) -> List[str]:
ans = []
for word in words:
mapping = {}
ok = True
for i in range(len(word)):
if word[i] not in mapping:
mapping[word[i]] = pattern[i]
elif mapping[word[i]] != pattern[i]:
ok = False
break
if ok and len(set(mapping.values())) == len(set(mapping.keys())):
ans.append(word)
return ans