如何用服务器代替空间做网站谷歌搜索引擎官网
给你一个只包含 '('
和 ')'
的字符串,找出最长有效(格式正确且连续)括号
子串
的长度。
示例 1:
输入:s = "(()" 输出:2 解释:最长有效括号子串是 "()"
示例 2:
输入:s = ")()())" 输出:4 解释:最长有效括号子串是 "()()"
示例 3:
输入:s = "" 输出:0
提示:
0 <= s.length <= 3 * 104
s[i]
为'('
或')'
int longestValidParentheses(string s) {
int size = s.length();
vector<bool>visited(size+1,false);
stack<int>stk;
int cur=0;
while(s[cur]==')')
{
cur++;
}
if(cur>=size)
{
return 0;
}
stk.push(cur);
cur++;
while(cur<size)
{
if(s[cur]==')'&& stk.size()>0 && s[stk.top()]=='(')
{
visited[stk.top()]=true;
visited[cur]=true;
stk.pop();
}
else if(s[cur]=='(')
{
stk.push(cur);
}
cur++;
}
int len=0;
int i=0;
while(i<size)
{
while(i<size && visited[i]==false)
{
i++;
}
int tmp=0;
while(i<size && visited[i]==true)
{
tmp++;
i++;
}
if(tmp>len)
{
len=tmp;
}
}
return len;
}