LeetCode(困難)最長有效括號(c#)

題目爲 給定一個只包含 ‘(’ 和 ‘)’ 的字符串,找出最長的包含有效括號的子串的長度。
在這裏插入圖片描述
思路參考官方題解 方法 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;
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章