正则匹配字符串无匹配不到_实现简单正则表达式匹配

48e88ddfe2f839dfe4eb3c72589c48d2.png

这是facebook的面试题

实现包含以下特殊字符的正则表达匹配

“.” 匹配任意一个字符

“*” 匹配任意多个前面的字符

例如给定正则表达“ra.”和字符串“ray”你的函数应该返回true,但是仍用这个正则匹配另一个字符串“raymond”应当返回false

给定正则表达“.*at”和字符串“chat”应当返回true,和字符串“chats”应当返回false

【上期答案】

470d2caea8b6ea81b12ccc1066ac7978.png

他给的附加说明很重要,可以使用父节点的指针,所以当你做锁住和解锁操作的时候可以通知到父亲级别甚至更高,我们就要在这个通知上做文章

39ff3f0bdbc6e9fae2a35a0a59e43f08.png

使用一个变量,记录被锁住孩子的个数

1217469a8b17396684f71654873b338e.png

is_locked只是返回节点的属性而已,重点在lock方法

04a3279eb90cde433577c1ef906496dd.png

unlock方法刚好相反,通知所有上层减1

76274701eabd3364522f3fba17a0ee24.png

最后做了一个方便测试的静态方法,从对象构造一个带有反向指针的树,接下来是构造测试了

4e0f7a24169596f6da6b58a779782bc8.png

我们主要有以下几点要测试

1。孩子没有被锁住的,可以lock/unlock

2。孩子有被锁住的,不可以lock/unlock

3。左子树锁住,不影响右子树lock/unlock

4。父亲被锁住,不影响孩子lock/unlock

4f61acfa9244eb28eaf3e5a389b9ef09.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言简单说】十三:逻辑运算符||

(﹏)~ 更完睡觉。 这一节我们来说说逻辑或||,其实很简单的,既然你们理解了第一个逻辑与,那么逻辑或就没什么难度了。 我们说过逻辑与就像我们的并列关系,例如我们吃了苹果和李子。我们现在的逻辑或呢&a…

C#中元组对象Tuple的使用

简介元组使用泛型来简化类的定义,多用于方法的返回值。在函数需要返回多个类型的时候,就不必使用out , ref等关键字了,直接定义一个Tuple类型,使用起来非常方便例子在我们编程时,比如一个人的信息,我们常常…

linux之通过strings命令查看so里面是否包含****字符串

1 问题 比如我们在一个C文件里面或者C++文件里面添加了日志打印字符串***,但是实际上没打印,我们会怀疑这个打印字符串有没有加到so里面去,那我们有什么办法呢?用strings命令 strings ***.so | grep 关键字 strings命令是在对象文件或者二进制文件中查找可打印的字符串 …

HQ-day2 C#语言基础

今天主要学习了C#的一些语言基础。 主要有:输入、输出。 一丶输入Console.readline(); 输入语句 输出console.write(); 输出语句 Console.writeline(); 输出语句自动换行 注释 CtrlK 然后 按C ,注释选中部分 CtrlK 然后 按U, 取消注释 二、…

删除 oracle

C:\app\Administrator\product\11.2.0\client_1\deinstall 用这个批处理文件,会把oracle全部删除,除这个目录本身以外 .另外它不删除服务,即使服务已经被停止(不停止也无法卸载). 采用 sc delete 服务名,删除服务.

程序员应该选择哪种语言来学习更好?应该如何学

还记得自己那年考清华失败,被调剂到中科大软院,当初有几个方向可以选,软件设计、嵌入式、信息安全等等,毫不犹豫地选择了信息安全。为什么选信息安全?这四个字听起来多牛多有感觉,我本科是学物理的&#xf…

C#文件写入操作

using System; using System.IO;namespace IO操作 {class Program{static void Main(string[] args){using(StreamWriter wFile.AppendText("IO.txt")){TextIn("Hello GeoStorm", w);TextIn("Hello World",w);w.Close();}}public static void Te…

【C语言简单说】十三:变量的生命周期

这次我们就来说说生命周期的问题。其实声明周期的意思就是他这个变量的作用范围,啥是作用范围?唔。。。看我举例子吧,意会,意会。。。 首先,我想问一下你们,如果你们校长叫做小明,你们班也有一…

指数分布java_python-numpy-指数分布实例详解

如下所示:# Seed random number generatornp.random.seed(42)# Compute mean no-hitter time: tautau np.mean(nohitter_times)# Draw out of an exponential distribution with parameter tau: inter_nohitter_timeinter_nohitter_time np.random.exponential(ta…

ASP.NET 6 中间件系列 - 条件中间件

这篇文章是 ASP.NET 6 中间件系列文章的第 4 部分。到目前为止,我们已经介绍了 ASP.NET 6 中间件的基础知识,展示了如何创建自定义中间件类,并讨论了中间件执行顺序的重要性。在本系列的最后一部分中,我们将展示在管道中有条件地执…

服务器之Apache和Tomcat和Nginx的理解和对比

1 问题 公司服务器用的Apache,后台是php语言,然后服务端用的linux C/C,会经常听到Apache服务器,然后之前实习的公司服务端用的java,然后依稀记得使用了nginx反向代理服务器和tomcat,请求先经过nginx然后再去通过tomcat转发请求,然…

python数据结构教程_利用Python演示数型数据结构的教程

使用 Python 内建的defaultdict方法可以轻松定义一个树的数据结构。简单的说树也可以是一个字典数据结构def tree(): return defaultdict(tree)这就是全部,就一行代码。如果你继续下面的代码,需要先引入from collections import defaultdict实例JSON-esq…

[Programming WCF Services]Chapter 1. WCF Essentials - Metadata Exchange

1.HTTP-GET WCF 方式 通过Http的方式提供metadata 1.1.配置文件方式 <system.serviceModel><services><service name "MyService" behaviorConfiguration "MEXGET"><host><baseAddresses><add baseAddress "http…

【C语言简单说】十四:for循环

说到了循环&#xff0c;我们的内容也就差不多了&#xff0c;此内容并不深入讲解太多东西&#xff0c;大家学习完&#xff0c;如果要深入的话可以查看相关书籍&#xff0c;详细大家学习完后可能会觉得看书上说的可能就看懂了。 可能会有人说为什么不说进制&#xff1f;或者说位…

C#读文件操作

using System; using System.IO;namespace IO操作 {class Program{private const string FILE_NAME"IO.txt";static void Main(string[] args){if (!File.Exists(FILE_NAME)){Console.WriteLine("{0}does not exists!",FILE_NAME);Console.ReadLine();retu…

使用RxJava从多个数据源获取数据

试想&#xff0c;需要一些动态数据的时候&#xff0c;只要每次都请求网络就可以了。但是&#xff0c;更有效率的做法是&#xff0c;把联网得到的数据&#xff0c;缓存到磁盘或内存。 具体的说&#xff0c;计划如下&#xff1a; 偶尔的联网操作&#xff0c;只为获取最新数据。 …

centos 零碎学习小记 2.

1.具体实验&#xff08;让网卡ethX 里设置的DNS&#xff0c;不影响DNS配置文件 /etc/resolv.conf&#xff09;1.装完系统的人都想把机器连接外网&#xff0c;都会先看看自己网卡。那么我们用神马呢?简单实用 #ifconfig -a 看看自己网卡信息2.网卡看了开始设置您的网络吧&#…

AspNetCore配置多环境log4net配置文件

前言在之前的文章中有讲到AspNetCore多环境配置文件的应用&#xff0c;我们根据自己多种环境分别配置多个appsettings.$EnvironmentName.json文件。在实际的开发中我们可能会遇到不只一个配置文件&#xff0c;如当我们使用log4net日志库时&#xff0c;喜欢使用单独的log4net.co…

java阻塞队列作用_简单理解阻塞队列(BlockingQueue)中的take/put方法以及Condition存在的作用...

简单理解阻塞队列(BlockingQueue)中的take/put方法以及Condition存在的作用Condition&#xff1a;可以理解成一把锁的一个钥匙&#xff0c;它既可以解锁(通知放行)&#xff0c;又可以加锁(阻塞)notFull&#xff1a;当队列元素满了时&#xff0c;阻塞生产&#xff0c;当队列元素…

剑指offer之找出数组中重复数字

1 问题 给的N个数字的数组&#xff0c;每个元素的大小范围大于等于0小于N(0 << a[i] < N),找出数组中有哪些数字重复了并且这个数字重复了多少次&#xff0c;一共有几个数字重复了。 2思路 由于元素的大小范围大于等于0小于N(0 << a[i] < N),我们直接把这个…