堆栈_括号匹配
Posted summerkiki
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了堆栈_括号匹配相关的知识,希望对你有一定的参考价值。
class Solution { public: bool isValid(string s) { if(s.empty()) return false; stack<int> s1; int n=s.size(); for(int i=0;i<n;i++) { if(s[i]==‘(‘||s[i]==‘[‘||s[i]==‘{‘) s1.push(s[i]); else if(s1.empty()) return false; else if((s[i]==‘)‘&&s1.top()==‘(‘)||(s[i]==‘]‘&&s1.top()==‘[‘)||(s[i]==‘}‘&&s1.top()==‘{‘)) s1.pop(); else return false; } if(s1.empty()) return true; else return false; } };
此题的思路是:最前面的左括号要和最后面的右括号匹配,所以是一种先进后出的思想,使用堆栈最方便,且要注意括号的顺序,不能出现交叉的情况。
我在leetcode上做的时候,一开始没有注意到函数的返回值是bool,自己随便return值,所以出现了wrong answer,修改为返回false和true之后就正确了,细节要注意。
以上是关于堆栈_括号匹配的主要内容,如果未能解决你的问题,请参考以下文章
Java堆栈的应用1----------堆栈的自定义实现以及括号匹配算法的Java实现