括号匹配问题:给一个字符串,其中包含小括号、中括号、大括号,求该字符串中的括号是否匹配。
例如:
()()[]{} 匹配
([{()}]) 匹配
[]( 不匹配
[(]) 不匹配
算法思想:左括号进栈。右括号不进栈,就看看栈顶有没有自己的对象,没有就不匹配。
比如有一堆括号{[}],按照栈的顺序,先进后出出入栈。
1.{ 说:“我入栈了,我的期待的对象是 }” |
2.[说 “我入栈了,我期待的对象是]” |
3.到了 } 时 就看看栈顶是不是期待它的对象 },结果不是 | 返回false |
以此类推代码步骤:
1.只需要从字符串中对左括号 { [ ( 进行入栈操作
2.如果遇到了一个右括号 } ] ) 则要做三件事:
①看看栈里(栈里都是左括号)是否空了,如果栈空了,右括号就没有匹配的对象了
②如果栈没空,则去看看栈顶看