例如:如果一个字符串是")(((())))))("
,答案应该是 8。我实现如下:(向他人学习)
int longestValidParentheses(string s) {
int len = s.length();
char* str = new char[len+1];
strcpy(str,s.c_str());
int maxlen=0;
stack<char*> stk;
char* cur = str;
while(*cur)
{
if(*cur=='(')
stk.push(cur);
else
{
if(!stk.empty() && *stk.top()=='(')
{
stk.pop();
maxlen = max(maxlen, cur-(stk.empty()?str-1:stk.top()));
}
else
stk.push(cur);
}
cur++;
}
return maxlen;
}
但我不知道为什么这段代码,char* str = new char[len+1]
但不是char* str = new char[len]
。谁能告诉我为什么?如果我使用char* str = new char[len]
,会发生错误。