正则表达式 圆括号 方括号

圆括号问题

由于这是一个著名的编程问题,因此我们大多数人有可能在CS101课程或其他课程中解决了这个问题。 尽管如此,我仍然坚持在浏览下一部分之前,我们先浏览一下问题陈述。

假设我们有一个只能包含方括号[],括号()和大括号{}输入字符串 。 然后,当我们的输入字符串满足两个条件时,它被认为是平衡的:

  • LOFC( 最后打开的是第一个关闭的 )意味着最后打开的是第一个关闭的。
  • LOFC考虑到开括号和闭括号属于同一对,即(),[]和{}

此外, 如果输入字符串为空,则可以说它是balance

样本输入数据

接下来,让我们看一些示例输入字符串,并找出它们是否平衡:

[()[]{}]{} is balanced
[][]() is balanced
() is balanced
))(( is not balanced
{) is not balanced

偏见的头脑留有很小的空间

是的,我知道我们中有些人已经创建了堆栈的心理图景来开始解决此问题。

但是,这是您之前解决过的一件好事,或者您是第一次阅读此问题,并很快想到了基于堆栈的解决方案。 但是,我敦促您暂时释放空间 ,以免您的想法出现偏差。

使用顶空的解决方案

用正则表达式解决它的全部目的在于,如我们所见,编码更加直观 。 此外,就算法的时间复杂度而言,我绝对不是一个更好的方法!

首先,让我们重新回顾上一部分示例输入列表中的第一个:

[()[]{}]{}

现在,让我们在尝试解决问题时尝试观察自己的想法 。 我们可以是一个天才,可以快速解决它,但是我们需要慢慢观察这个思考过程。 此外,我们应该牢记一切。 这意味着我们必须避免使用笔和纸。

尽管我们不需要超过3分钟 ,但我们可以花尽可能多的时间来满意地完成此活动。

除非我们花一些时间在这里,否则没有任何进一步的意义。 没有人会判断我们是否慢-越慢越好,但是我们必须全神贯注于这项活动以一次完成。

并且,只要我们准备就绪,就尝试回答一些问题:

  • 我们一口气解决了吗?
  • 我们是否可以专注于字符串中的(),{}和[]之类的模式?
  • 发现平衡模式(),{},[]时我们做了什么?

让我们为给我们一个宽敞的顶部空间以可视化地解决它的整个过程而努力。

现在,每个人都可以以不同的方式想象到这一点。 现在,让我提出我如何形象化它。

首先,我很快就能在较宽的方括号内发现(),[],{}的三种模式,以及在最右侧的{}模式。 但是,我必须提到,我实际上并没有看到包含三个平衡括号的更宽的括号。

然后,一旦我发现了一些平衡的模式,我便试图通过忽略视线中已经发现的模式来集中精力。 结果,我可以看到[]的一种模式包含了较早观察到的模式。

接下来,我知道没有更多的新模式可以识别了,如果我忽略所有这些模式,那么除了空字符串之外,我什么也没有。

当然,在迈向下一步时,我必须更加集中精力。

就像他们说的那样,一张图片值一千个字,因此我稍后尝试勾画此活动,以更好地描述整个过程:

使用sed实现

啊! 我知道。 我知道。 执行使我们很多人兴奋,

我们,开发人员喜欢行动。 看到实际的代码使我们感到震撼。 是不是

但是, sed
真的吗? 不是Java,Python,Kotlin,Go,Haskell。 连C都没有?

是的,sed,是的。

正则表达式 圆括号 方括号_使用正则表达式解决平衡括号问题相关推荐

  1. java正则表达式替换特殊字符_使用正则表达式替换报表名称中的特殊字符(推荐)...

    正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式(规则)的文 ...

  2. java正则表达式所有字符串_“JAVA”正则表达式如何匹配所有符合要求的子字符串?...

    慕容708150 一.正则表达式基础知识1.1 句点符号    在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以"t"字母开头,以"n"字母结束.另 ...

  3. python正则表达式排除字符_利用正则表达式排除特定字符串

    查找不以baidu开头的字符串 baidu.com sina.com.cn 正则:^(?!baidu).*$  匹配结果就是第2行,也就是第1行被排除了 这里使用了零宽度断言(?!exp),注意,我们 ...

  4. Java用正则表达式判断学号,利用正则表达式验证学号_利用正则表达式开发动态网页...

    [摘 要]在动态网页设计中,利用正则表达式可以高效.快速地进行开发,本文探讨了在PHP中利用正则表达式进行url地址解析,密码和邮件验证以及文本文件的处理. [关键词]正则表达式 PHP 动态网页 [ ...

  5. python正则表达式提取电话号码_利用正则表达式编写python 爬虫,抓取网页电话号码!...

    利用正则表达式编写python 爬虫,抓取网页联系我们电话号码!这里以九奥科技(www.jiuaoo.com)为例,抓取'联系我们'里面的电话号码,并输出. #!/usrweilie/bin/pyth ...

  6. 正则表达式学习日记_《学习正则表达式》笔记_Mr_Ouyang

    正则表达式学习日记_<学习正则表达式>笔记_Mr_Ouyang 所属分类: 正则表达式学习日记  书名:     学习正则表达式 作者:     Michael Fitzgerald 译者 ...

  7. python正则表达式需要模块_使用Python正则表达式模块,让操作更加简单

    处理文本数据的一个主要任务就是创建许多以文本为基础的特性. 人们可能想要在文本中找出特定格式的内容,比如找出存在于文本中的电子邮件,或者大型文本中的电话号码. 虽然想要实现上述功能听起来很繁琐,但是如 ...

  8. python正则表达式入门_python入门_常见正则表达式匹配

    made_in_miliLV的主页.png - 正则表达式:正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配.在开发的使用场景 - 例如:匹配url等等 本文中,对正则 ...

  9. 正则表达式 右上角加号_最全正则表达式讲解实战,附源码,敲一遍学会

    文章来源:王的机器 作者:王圣元 本文含 10026 字,27图表截屏建议阅读 42 分钟在公众号对话框回复 RE获取完整 Jupyter Notebook0引言 正则表达式(Regular Expr ...

最新文章

  1. 小米语音首席科学家Daniel Povey:下一代Kaldi将走向何方?
  2. getHibernateTemplate()的用法 (转)
  3. Key Components and Internals of Spring Boot Framework--转
  4. ARM64的启动过程之(二):创建启动阶段的页表
  5. 六级范文背诵50篇_清华附小校长:小学生日记写作训练,附经典范文50篇,家长收藏...
  6. 假如购买的期房不小心烂尾了,那银行贷款是否可以不还了?
  7. Java之Callable和Runnable
  8. C++描述杭电OJ 2011.多项式求和 ||
  9. 索引失效的场景(面试)
  10. 完全CSS实现鼠标移上出现层的效果(超简单)
  11. 萝卜源码前后端源码 附打包APP的教程
  12. Tensorflow中的RNN个人备忘
  13. 轻松取消Excel中的“自动添加超链接”
  14. 2022.5.23-5.29 AI行业周刊(第99期):AI创业道路
  15. HELIX Design system v4.r3.M0-ISO 1CD
  16. 应用进展_解释的标准事件:第2部分–应用和进展
  17. Linux 串口编程学习记录(termios.h)
  18. 2020-03-31
  19. Python IDE、IDLE 和 Tcl/Tk
  20. linux 学习决心书

热门文章

  1. Windows dos命令使用总结(持续更新)
  2. lyrebird(MOCK平台)美团琴鸟,windows系统环境搭建以及使用手册
  3. 凸优化——详解对偶和鞍点
  4. Android stdio 实时获取相机预览图像(详细)
  5. thanks!maomao~~
  6. SuspendThread、ResumeThread(二)
  7. 2014阿里巴巴校园招聘研发工程师笔试题(北邮站)
  8. 用Zoundry离线更新Bloger
  9. Hbase设计,数据热点问题
  10. 网格与云计算关键技术