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.
[Solution]
说明:版权所有,转载请注明出处。 Coder007的博客class Solution {
public:
int longestValidParentheses(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
stack<char> myStack;
stack<int> indexStack;
// get valid parentheses
for(int i = 0; i < s.size(); ++i){
// '('
if(s[i] == '('){
myStack.push(s[i]);
indexStack.push(i);
}
// ')'
else{
// pop the top of the stack
if(!myStack.empty() && myStack.top() == '('){
myStack.pop();
indexStack.pop();
}
// push ')'
else{
myStack.push(s[i]);
indexStack.push(i);
}
}
}
// get result
if(indexStack.empty()){
return s.size();
}
else{
int res = 0, top = s.size();
while(!indexStack.empty()){
res = max(res, top - indexStack.top() - 1);
top = indexStack.top();
indexStack.pop();
}
res = max(res, top);
return res;
}
}
};
本文提供了一种使用栈来解决寻找字符串中最长有效括号子串问题的方法。通过遍历字符串并利用两个栈分别存储字符和对应的索引来判断括号是否匹配,最终找出最长的有效括号子串长度。


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



