前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Leetcode打卡 | No.20 有效的括号

Leetcode打卡 | No.20 有效的括号

作者头像
小小詹同学
发布2018-08-17 13:22:45
5350
发布2018-08-17 13:22:45
举报
文章被收录于专栏:小詹同学小詹同学

No.20 有效的括号

题目:

给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例 1:

代码语言:javascript
复制
输入: "()"输出: true

示例 2:

代码语言:javascript
复制
输入: "()[]{}"输出: true

示例 3:

代码语言:javascript
复制
输入: "(]"输出: false

思路分析:我们得知道有效括号的特点 ,肯定都是左括号在一起 ,之后才是右括号 ,而且左右数量等同 ,从中间看来是严格对称的 ,所以最简单的思路就是从中间位置向两端对比 。这里采用另外的方法来实现判断 。

思路一 :利用python种的replace函数将成对的可匹配括号用空字符代替 ,之后依次进行 ,若是有效的括号 ,必然经过有限次循环后 ,字符串为空 ,则最后判断字符串是否为空即可。思路简单 ,实现也很容易 :

思路二 :除了利用python的replace函数 ,我们知道数据结构种有一个栈的概念 ,对的 ,思路二就是利用栈的思路解决这一个问题 。其实质和思路一异曲同工 ,只不过不需要python的replace函数 ,也就是说其他语言也可以 ,具有普适性 。具体做法和思路一类似 ,即在 append 所有左括号后 ,再依次判断右括号和其左侧一个左括号是否匹配 ,若匹配则将刚 append 进 stack 的左括号 pop 出 ,如果为有效括号 ,最后所有的左括号都会从 stack 中 pop 出 ,即最后通过判断 stack 是否长度为 0 即可 。

代码上传到小詹的GitHub了 ,链接为 :https://github.com/Jan1995/LeetCode

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小詹学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档