[leetcode]Longest Valid Parentheses

来源:互联网 发布:科学管理案例 知乎 编辑:程序博客网 时间:2024/05/01 07:25

Longest Valid Parentheses

 My Submissions

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.

题目:求最长的括号匹配

思路:申请一个与字符串长度相同的数组用来标记连续匹配的字符,不匹配的置为0,匹配的置为1
    int longestValidParentheses(string s) {        // IMPORTANT: Please reset any member data you declared, as        // the same Solution instance will be reused for each test case.        int maxLen = 0;        size_t slen = s.size();                vector<char> vc(slen, 0); //连续匹配的数组 0表示不匹配 1表示匹配        stack<int> si; //存放左括号即字符串的下标,用来与右括号作匹配                for(int i = 0; i < slen; i++){            if('(' == s[i]){                vc[i] = 1; si.push(i);            }else{                if(!si.empty()){                    si.pop(); vc[i] = 1;                }            }        }        while(!si.empty()){ vc[si.top()] = 0; si.pop(); } //将栈中剩余的下标置为0,因为没有右括号与其匹配                int cnt = 0;        for(int i = 0; i < slen; i++){                if(vc[i]){                         cnt++;                        maxLen = max(cnt, maxLen);  //计算连续1的个数既最大连续匹配括号个数                }else{                          cnt = 0;                 }        }                return maxLen;    }


0 0
原创粉丝点击