-
发表于 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 题目链接
-