32 棧和佇列 有效括號(C 版)

2021-10-17 14:35:20 字數 1011 閱讀 6630

問題不難理解, 主要是明確成對條件:配對括號需「成對」出現才行,相互挨著,不能有間隔,即「(])」便是不被允許的。

使用棧來解決該問題,主要就是由兩個操作來實現對成對括號的判斷,依次遍歷字串,被遍歷的元素是左括號的就入棧,不是左括號的進行判斷,若與棧中的棧頂元素成對則彈出棧頂元素,不成對說明不是有效的括號。邊界條件是需要在彈出時判斷一下棧是否為空,若為空,則說明棧中無與之配對的括號,該字串不是有效的括號。

class

solution

else

if(s[i]

==']'

)else

if(s[i]

=='}')}

}return st.

empty()

;}};

時間複雜度為o(n),空間複雜度為o(n)。

將成對括號儲存在hash表中,每次通過查詢hash表中的資料,來判斷是否為成對括號。

參考文章:有效的括號

class

solution,,

','}

; stack st;

for(char ch : s)

st.pop();

}else

}return st.

empty()

;}};

時間複雜度為o(n),空間複雜度為o(n)。

32 最長有效括號 (棧)

給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2 解釋 最長有效括號子串為 示例 2 輸入 輸出 4 解釋 最長有效括號子串為 困難 題意是找到最長的連續有效括號 如s 有效的連續括號只有 答案應該是2.一開始理解錯了,以為是要求所有有效括號的總長度。分析 利...

佇列 棧 有效的括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...

佇列 棧 有效的括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...