问题描述
Given a string containing just the characters '(' and ')',
find the length of the longest valid (well-formed) parentheses substring.
For "(()",
the longest valid parentheses substring is "()",
which has length = 2.
Another example is ")()())",
where the longest valid parentheses substring is "()()",
which has length = 4.
class Solution {
public:
int longestValidParentheses(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
stack<char> chs;
stack<int> top;
char c;
int length=s.size();
int ret=0;
chs.push('\0');
top.push(-1);
for(int i=0 ; i<length ; i++){
if(s[i]=='('){
chs.push('(');
top.push(i);
}
else{
c=chs.top();
if(c=='('){
chs.pop();
top.pop();
int j=top.top();
ret=max(ret,i-j);
}else{
chs.push(')');
top.push(i);
}
}
}
return ret;
}
};这道题的主要思路在这一表达式ret=max(ret,i-j);
250

被折叠的 条评论
为什么被折叠?



