给出一个只包含'('
和')'
的字符串,找出其中最长的左右括号正确匹配的合法子串。
样例
样例 1:
输入: "(()"
输出: 2
解释: 最长有效括号子串为 "()"
样例 2:
输入: ")()())"
输出: 4
解释: 最长有效括号子串为 "()()"
注意事项
返回的子串的所有子串括号也都符合要求
class Solution {
public:
/**
* @param s: a string
* @return: return a integer
*/
int longestValidParentheses(string &s) {
// write your code here
if(s == "")
return 0;
int res = 0;
int start = 0;
int stack[s.length()];
int top = -1;
for (int i = 0; i < s.length(); i ++) {
if (s[i] == '(')
{
stack[++top] = i;
}
else
{
if(top == -1)
{
start = i + 1;
}
else
{
top--;
res = top == -1 ? max(res, i - start + 1) : max(res, i - stack[top]);
}
}
}
return res;
}
};