标签:style blog color io 使用 ar for div sp
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.
思路:使用vector模拟栈,栈顶元素表示出现在当前‘(’之后的合法匹配数,栈本身具有一个哨位节点。依次遍历s,若当前字符s[i]==‘(‘,则将0入栈;否则,将栈顶元素加2后再加到次栈顶元素,同时栈顶元素出栈。
1 class Solution { 2 public: 3 int longestValidParentheses( string s ) { 4 int slen = s.length(), idx = 0, ret = 0; 5 if( slen <= 1 ) { return 0; } 6 vector<int> cntVec( slen+1, 0 ); 7 for( int i = 0; i < slen; ++i ) { 8 if( s[i] == ‘(‘ ) { 9 cntVec[++idx] = 0; 10 } else { 11 if( idx > 0 ) { 12 cntVec[idx-1] += cntVec[idx]+2; 13 ret = max( ret, cntVec[--idx] ); 14 } else { 15 cntVec[0] = 0; 16 } 17 } 18 } 19 return ret; 20 } 21 };
标签:style blog color io 使用 ar for div sp
原文地址:http://www.cnblogs.com/moderate-fish/p/3954436.html