leetcode 32. Longest Valid Parentheses

来源:互联网 发布:matlab solve 数组 编辑:程序博客网 时间:2024/05/22 02:20

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.



class Solution {public:int longestValidParentheses(string s) {vector<pair<char, int>>str;for (int i = 0; i < s.length(); i++)str.push_back(pair<char, int>(s[i], i));bool f = true;while (!str.empty()&&f){f = false;int k = 0;while (!str.empty()&&k < str.size()-1){if (str[k].first == '('&&str[k + 1].first == ')'){f = true;str.erase(str.begin() + k, str.begin() + k + 2);}else k++;}}if (str.empty())return s.length();int maxlen = 0;if (str[0].second>maxlen)maxlen = str[0].second;if (s.length() - str.back().second - 1 > maxlen)maxlen = s.length() - str.back().second - 1;for (int i = 1; i < str.size(); i++)if (str[i].second - str[i - 1].second - 1>maxlen)maxlen = str[i].second - str[i - 1].second - 1;return maxlen;}};

accepted


0 0