题目描述
给定一个只包含
'('
和')'
的字符串,找出最长的包含有效括号的子串的长度。
示例1
输入: "(()" 输出: 2 解释: 最长有效括号子串为 "()"
示例2
输入: ")()())" 输出: 4 解释: 最长有效括号子串为 "()()"
实现
int longestValidParentheses(string s) {
int last = -1;
stack<int> data;
int max_len = 0;
for (int i = 0; i < s.length(); i++)
{
if (s[i] == '(')
{
data.push(i);
} else {
if (data.empty())
{
last = i;
} else {
data.pop();
if (data.empty())
{
max_len = max(max_len, i - last);
} else {
max_len = max(max_len, i - data.top());
}
}
}
}
return max_len;
}