49_leetcode_Longest Valid Parentheses

来源:互联网 发布:蓝月传奇英雄翅膀数据 编辑:程序博客网 时间:2024/04/30 15:35

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.

1:注意特殊情况;2:new一个bool数组,3:对字符串中的字符进行进栈和出栈操作,并且初始相应的bool数组;4:统计bool数组中连续true的个数

    int longestValidParentheses(string s)    {        if(s.size() <= 1)        {            return 0;        }                stack<int> myStack;        int size = (int)s.size();        bool* flag = new bool[size] ;        memset(flag, false, size);                for(int i = 0; s[i] != '\0'; i++)        {            if(s[i] == '(')            {                myStack.push(i);            }            else            {                if(!myStack.empty() && s[myStack.top()] == '(')                {                    flag[myStack.top()] = true;                    myStack.pop();                    flag[i] = true;                }            }        }                int maxNumber = 0;        int count = 0;        for(int i = 0; i < size; i++)        {            if(flag[i] == true)            {                count++;                if(count > maxNumber)                {                    maxNumber = count;                }            }            else            {                count = 0;            }        }                        delete []flag;        return maxNumber;    }


0 0
原创粉丝点击