难度:★★☆☆☆
类型:字符串
方法:找规律
题目
力扣链接请移步本题传送门
更多力扣中等题的解决方案请移步力扣中等题目录
返回与给定的前序和后序遍历匹配的任何二叉树。
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模式匹配的条件是:
- 对于s1中的每个字符,在s2中有且只有一个字符与之对应;
- 对于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解决方案,请移步力扣中等题解析
网友评论