前端|LeetCode20_有效的括号

题目描述

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

有效字符串需知足:code

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

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

解题思路

拿到题目,第一件事情,就是先把问题分解,从题目描述中能够看出要对三种类型的组合括号进行判断,那咱们就先考虑一种括号的状况。题目中提到的注意空字符,也能够先不考虑。字符串

分解后的题目描述

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

有效字符串需知足:class

  1. 左括号必须以正确的顺序闭合。

思路

如今题目就变得更加简单了,由于只有这一种类型的符号,咱们不用考虑括号类型是否正确。核心的问题就是如何判断括号的顺序是否正确。循环

那如何判断括号的顺序是否正确呢?im

括号只有左括号和右括号两种,左括号在左边,右括号在右边即为正确的顺序,其余的顺序都是错误的。img

使用栈后进先出的特性,先把左括号推入栈中,等到遇到右括号的时候,把左括号从栈推出,和右括号进行比较,若是两个括号匹配,那就证实这一对括号是正确的,接下来重复上述操做,直到没有右括号,退出循环。退出循环后检查栈中是否还有括号存在,若是栈为空,则证实全部括号都配对完成,反之,则证实字符串不是有效的。co

解决了一个类型的括号后,遇到多个类型的括号,只要在判断括号是否匹配的时候去检测一下是不是配对括号便可。

实现

Untitled (3).jpeg

相关文章
相关标签/搜索