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;
}