Skip to content

Latest commit

 

History

History
78 lines (56 loc) · 2.58 KB

890-find-and-replace-pattern.md

File metadata and controls

78 lines (56 loc) · 2.58 KB

890. Find and Replace Pattern - 查找和替换模式

你有一个单词列表 words 和一个模式  pattern,你想知道 words 中的哪些单词与模式匹配。

如果存在字母的排列 p ,使得将模式中的每个字母 x 替换为 p(x) 之后,我们就得到了所需的单词,那么单词与模式是匹配的。

(回想一下,字母的排列是从字母到字母的双射:每个字母映射到另一个字母,没有两个字母映射到同一个字母。)

返回 words 中与给定模式匹配的单词列表。

你可以按任何顺序返回答案。

 

示例:

输入:words = ["abc","deq","mee","aqq","dkd","ccc"], pattern = "abb"
输出:["mee","aqq"]
解释:
"mee" 与模式匹配,因为存在排列 {a -> m, b -> e, ...}。
"ccc" 与模式不匹配,因为 {a -> c, b -> c, ...} 不是排列。
因为 a 和 b 映射到同一个字母。

 

提示:

  • 1 <= words.length <= 50
  • 1 <= pattern.length = words[i].length <= 20

题目标签:String

题目链接:LeetCode / LeetCode中国

题解

Language Runtime Memory
python3 36 ms N/A
class Solution:
    def findAndReplacePattern(self, words, pattern):
        """
        :type words: List[str]
        :type pattern: str
        :rtype: List[str]
        """
        rst = []
        for w in words:
            if len(w) == len(pattern):
                m = {}
                for i in range(len(w)):
                    x, y = pattern[i], w[i]
                    if x in m:
                        if m[x] != y:
                            break
                    else:
                        if y in m.values():
                            break
                        else:
                            m[x] = y
                else:
                    rst.append(w)
            else:
                continue
        return rst