括号匹配记得无脑stack
stack存的是括号的位置下标
这题的小trick是,stack底存一个未匹配的上一个’)‘,初始化的时候需要push一个-1的’)‘坐标进去
else里面的代码有点小巧妙哦,自己做的时候按照各种乱七八糟的情况考虑的,这样做的话stack里面直接无论’)‘还是’('都可以给你一次算出maxans了
ACcode
class Solution {
public:
int longestValidParentheses(string s) {
stack<char> a;
int ans = 0;
a.push(-1);
for(int i = 0;i < s.length();i++){
if(s[i]=='('){
a.push(i);
}
else {
a.pop();
if(a.empty()){
a.push(i);
}
else {
ans = max(ans,i-a.top());
}
}
}
// ans=max(n)
return ans ;
}
};