LeetCode刷题笔记 - JavaScript(四)

news/2024/11/29 7:34:41/

文章目录

    • 1.剑指 Offer 37. 序列化二叉树
    • 1.剑指 Offer 19. 正则表达式匹配

剑指 Offer 37. 序列化二叉树
剑指 Offer 19. 正则表达式匹配 LCOF

1.剑指 Offer 37. 序列化二叉树

请实现两个函数,分别用来序列化和反序列化二叉树。
你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。

题目大意:模拟二叉树的序列化和反序列化。

解题思路:dfs的序列化和反序列化。

代码

var serialize = function(root, str='') {if(root === null) {str += 'null,';return str;} else {str += root.val + ',';str += serialize(root.left);str += serialize(root.right); }return str;
};function dfs(data) {if(data[0] == 'null') {data.shift();return null;}const root = new TreeNode(data[0]);data.shift();root.left = dfs(data);root.right = dfs(data);return root;
}var deserialize = function(data, idx = 0) {data = data.split(',');return dfs(data);
};

1.剑指 Offer 19. 正则表达式匹配

请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。

题目大意:给出包含通配符的正则表达式,判断是否与测试字符串匹配。

解题思路:递归。首先判断首位字符是否相同。如果相同继续判断后面是否还有*通配符,如果有,分别判断匹配n次和匹配0次的情况。

代码

var isMatch = function(s, p) {if(p.length === 0) return s.length === 0;const flag = s.length !== 0 && (s[0] === p[0] || p[0] === '.');if(p.length >=2 && p[1] === '*') {// *匹配一个 || *匹配0个return (flag && isMatch(s.slice(1),p)) || isMatch(s,p.slice(2));} else {return flag && isMatch(s.slice(1), p.slice(1));}
};

http://www.ppmy.cn/news/18573.html

相关文章

【Ajax】了解Ajax与jQuery中的Ajax

一、了解Ajax什么是AjaxAjax 的全称是 Asynchronous Javascript And XML(异步 JavaScript 和 XML)。通俗的理解:在网页中利用 XMLHttpRequest 对象和服务器进行数据交互的方式,就是Ajax。2. 为什么要学Ajax之前所学的技术&#xf…

Python机器学习数据建模与分析——Numpy和Pandas综合应用案例:空气质量监测数据的预处理和基本分析

本篇文章主要以北京市空气质量监测数据为例子,聚集数据建模中的数据预处理和基本分析环节,说明Numpy和Pandas的数据读取、数据分组、数据重编码、分类汇总等数据加工处理功能。同时在实现案例的过程中对用到的Numpy和Pandas相关函数进行讲解。 文章目录数…

【数据结构——顺序表的实现】

前言: 在之前我们已经对复杂度进行的相关了解,因此现在我们将直接进入数据结构的顺序表的相关知识的学习。 目录1.线性表2.顺序表2.1概念及结构2.2 接口实现2.2.1.打印顺序表2.2.2初始化顺序表2.2.3.容量的检查2.2.4.销毁顺序表2.2.5.尾插操作2.2.6.尾删…

bfs入门教程(广度优先搜索)(含图解)

源自《啊哈算法》 目录 bfs正文 题目 思路 完整代码1 完整代码2 再解炸弹人 题目 思路 完整代码1 完整代码2 总结 bfs正文 第四章--深度优先搜索中,我们用dfs找到了寻找小哈的最短路径 接下来,我们要用bfs(Breadth First Sear…

DPU网络开发SDK——DPDK(九)

rte_eal_remote_launch() 在过去的几篇文章中,我们重点分析了DPDK初始化过程rte_eal_init()的主要流程,了解了其内存分配,primary和secondary之间如何实现数据共享。Hello world例子中,在DPDK初始化完成之后,调用rte_…

软件测试复习10:测试文档

专栏:《软件测试》 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 测试大纲:招标用,总体策略,对软件的了解,测试人员,资质等。 测试计划&#…

Python基础学习一

注释 单行注释 # 注释 # 后面直到行尾。 #!/usr/bin/python3# 第一个注释 print ("Hi, I love Python!") # 第二个注释执行以上的代码,结果输出如下: Hi, I love Python!多行注释 以 3 个单引号开头(‘’‘),并在注释结束的位置…

【数据结构与算法】详解二叉树以及模拟实现二叉树

文章目录前言:1.二叉树的定义2.二叉树的相关术语3.二叉树的性质4.特殊的二叉树5.二叉树的遍历前序遍历中序遍历后序遍历层序遍历6.获取树中节点的个数方法1:遍历思想方法2:子问题的思想7.获取叶子节点的个数方法1:遍历思想方法2:子问题的思想8.获取第K层节点的个数9.获取二叉树…