给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。spa
有效字符串需知足:code
注意空字符串可被认为是有效字符串。blog
拿到题目,第一件事情,就是先把问题分解,从题目描述中能够看出要对三种类型的组合括号进行判断,那咱们就先考虑一种括号的状况。题目中提到的注意空字符,也能够先不考虑。字符串
给定一个只包括 '('
,')'
的字符串,判断字符串是否有效。it
有效字符串需知足:class
如今题目就变得更加简单了,由于只有这一种类型的符号,咱们不用考虑括号类型是否正确。核心的问题就是如何判断括号的顺序是否正确。循环
那如何判断括号的顺序是否正确呢?im
括号只有左括号和右括号两种,左括号在左边,右括号在右边即为正确的顺序,其余的顺序都是错误的。img
使用栈后进先出的特性,先把左括号推入栈中,等到遇到右括号的时候,把左括号从栈推出,和右括号进行比较,若是两个括号匹配,那就证实这一对括号是正确的,接下来重复上述操做,直到没有右括号,退出循环。退出循环后检查栈中是否还有括号存在,若是栈为空,则证实全部括号都配对完成,反之,则证实字符串不是有效的。co
解决了一个类型的括号后,遇到多个类型的括号,只要在判断括号是否匹配的时候去检测一下是不是配对括号便可。