# LeetCode:Longest Valid Parentheses

### Longest Valid Parentheses

Total Accepted: 63715 Total Submissions: 282480 Difficulty: Hard

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.

Subscribe to see which companies asked this question

c++ code:

class Solution {
public:
int longestValidParentheses(string s) {
int n = s.length();
stack<int> st;
for (int i = 0; i < n; i++) {
if (s[i] == '(') st.push(i);
else {
if (!st.empty()) {
if (s[st.top()] == '(') st.pop();
else st.push(i);
}
else st.push(i);
}
}

int a = n, b = 0;
int ans = 0;
while(!st.empty()) {
b = st.top();
st.pop();
ans = max(ans, a-b-1);
a = b;
}
ans = max(ans, a);
return ans;
}
};

09-22 9548

02-04 1825

03-07 2017

05-14 779

07-26 2362

01-17 448

09-05 1985

03-04 1.2万

10-03 3132

12-10 801