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

闪念标签:LC

题目链接:https://leetcode.cn/problems/find-and-replace-pattern/