美文网首页
890. 查找和替换模式(Python)

890. 查找和替换模式(Python)

作者: 玖月晴 | 来源:发表于2021-02-23 10:04 被阅读0次

难度:★★☆☆☆
类型:字符串
方法:找规律

题目

力扣链接请移步本题传送门
更多力扣中等题的解决方案请移步力扣中等题目录

返回与给定的前序和后序遍历匹配的任何二叉树。

pre 和 post 遍历中的值是不同的正整数。

示例:

输入:pre = [1,2,4,5,3,6,7], post = [4,5,2,6,7,3,1]
输出:[1,2,3,4,5,6,7]

提示:

1 <= pre.length == post.length <= 30
pre[] 和 post[] 都是 1, 2, ..., pre.length 的排列
每个输入保证至少有一个答案。如果有多个答案,可以返回其中一个。

解答

两个字符串s1和s2模式匹配的条件是:

  1. 对于s1中的每个字符,在s2中有且只有一个字符与之对应;
  2. 对于s2中的每个字符,在s1中有且只有一个字符与之对应。

我们可考虑用两个哈希字典存储s1到s2和s2到s1的对应关系,一旦出现一对多的状况,说明不匹配。

当然这里利用python的特性,给出一种更加便捷的判别方式,即通过将s1和s2打包成元组,s1和s2匹配的前提是:

s1去重后的集合,s2去重后的集合,以及打包元组去重后的集合中存在相同的元素个数。

class Solution:
    def findAndReplacePattern(self, words, pattern):
        return filter(lambda w: len(set(w)) == len(set(pattern)) == len(set(zip(w, pattern))), words)

如有疑问或建议,欢迎评论区留言~

有关更多力扣中等题的python解决方案,请移步力扣中等题解析

相关文章

网友评论

      本文标题:890. 查找和替换模式(Python)

      本文链接:https://www.haomeiwen.com/subject/sfokfltx.html