題目爲 給定一個只包含 ‘(’ 和 ‘)’ 的字符串,找出最長的包含有效括號的子串的長度。
思路參考官方題解 方法 3:棧 官方題解鏈接地址
public int LongestValidParentheses(string s)
{
int maxCount = 0;
//存在清空至0位置的情況 所以添加-1元素
Stack<int> q = new Stack<int>();
q.Push(-1);
for (int i = 0; i < s.Length; i++)
{
if (s[i]=='(')
{
q.Push(i);
}
else
{
q.Pop();
//當堆中元素爲空 添加一個元素 記錄位置
if (q.Count==0)
{
q.Push(i);
}
maxCount = i - q.Peek() > maxCount ? i - q.Peek() : maxCount;
}
}
return maxCount;
}