您的位置:首页 > 其它

【leetcode】32. Longest Valid Parentheses

2016-06-08 15:36 465 查看
/**
* 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.
*/
#include <iostream>
#include <string>
#include <stack>
#include <algorithm>
using namespace std;

//找到最长的括号匹配的子串
int longestValidParentheses(string s)
{
if (s.empty()) return 0;

stack<int> st;
int maxlen = 0;
for (int i = 0; i < s.length(); i++)
{
if (!st.empty() && s[i] == ')' && s[st.top()] == '(')
{
st.pop();
maxlen = max(maxlen, i - st.top());
}
else
{
st.push(i);
}
}

return maxlen;
}

int main()
{

string s = "(()";
cout << longestValidParentheses(s) << endl;

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode