leetcode - Longest Valid Parentheses
2013-04-26 18:52 张汉生 阅读(140) 评论(0) 编辑 收藏 举报题目描述:点击此处
1 class Solution { 2 public: 3 int longestValidParentheses(string s) { 4 // Start typing your C/C++ solution below 5 // DO NOT write int main() function 6 stack<int> lefts; 7 int len = s.length(); 8 int * f = new int [len]; 9 int rlt = 0; 10 int i ; 11 for (i=0; i<len; i++) 12 f[i] = -1; 13 for (i=0; i<len; i++){ 14 char c = s.at(i); 15 if (c=='('){ 16 lefts.push(i); 17 } 18 else if (!lefts.empty()){ 19 int t = lefts.top(); 20 lefts.pop(); 21 f[t] = (i-t+1)/2; 22 } 23 } 24 i = 0; 25 while (i<len){ 26 if (f[i] == -1){ 27 i++; 28 continue; 29 } 30 int tlen = 0; 31 while (i<len && f[i]!=-1){ 32 tlen += f[i]; 33 if (tlen > rlt) 34 rlt = tlen ; 35 i += 2*f[i]; 36 } 37 } 38 delete []f; 39 return 2 * rlt; 40 } 41 };