棧和佇列 用棧實現括號匹配

2021-10-22 04:40:17 字數 1113 閱讀 7851

一、棧匹配

思路:借助棧來實現括號的匹配,如果碰到的是三種左括號的話,將左括號進行入棧,以為需要匹配到括號肯定都是右括號於左括號進行匹配的,所以遇到左括號直接入棧就可以了。如果遇到右括號,需要進行匹配,如果目前棧中為空的話,直接返回false,因為這個括號很明顯的多出來了。如果不為空,將棧中的乙個元素出棧,為了方便,直接進行三個字串的匹配,如下:

boolean b1 = c ==

')'&& cstack !=

'(';

boolean b2 = c ==

']'&& cstack !=

'[';

boolean b3 = c ==

'}'&& cstack !=

'

返回為false。每次輸入乙個字元匹配的時候,因為如果是匹配不上的話肯定返回false了,如果有乙個匹配上,那麼這三個都會為false。(這個地方大家自己debug一下比較的清楚,表達的不是太好)。如果最終棧為空的話 那麼就是匹配成功的

完整**如下:

/**

* 思路

* 將字串當做為乙個每乙個字元來處理,如果為左括號就進行入棧,如果是右括號就將乙個元素出棧

* 然後進行對應括號的匹配

* @param s

* @return

*/public static boolean isvalid

(string s)

else

char cstack = stack.

pop();

boolean b1 = c ==

')'&& cstack !=

'(';

boolean b2 = c ==

']'&& cstack !=

'[';

boolean b3 = c ==

'}'&& cstack !='}

}return stack.

isempty()

;}

如有錯誤,歡迎指正!!!

參考:cs-notes

用棧實現括號匹配

假設只允許出現兩種括號 圓括號和方括號,其巢狀順序隨意,即不管 或 等都為正確匹配,但是形如 就成為錯誤的匹配。可以用 期待的緊急程度 的概念來描述 如 共8個括號,從左往右依次標代號為1 8,即第乙個 代號為1,第二個 代號為2,第三個 代號為3,依次類推 當計算機收到了第乙個括號後,期待它與第八...

用棧實現括號匹配

構造棧函式並用棧實現括號匹配 以下 include include include 建立乙個棧,用棧求出二進位制轉十進位制,轉八進位制,銷毀,清空,push,pop 用棧來求逆波蘭演算法 用字元來轉成雙精度變數 用棧來檢驗括號是否正確 建立乙個鍊錶棧,並具有插入,刪除操作 define initnu...

括號匹配問題 棧實現佇列

在對棧的學習時,見到了兩個棧的應用場景,乙個是括號匹配問題,乙個是用棧來實現佇列。括號匹配問題的解決 首先基於棧的基礎上,實現括號匹配問題,要使用到棧的基本操作,入棧,獲取棧頂元素,出棧等。首先,先將左括號入棧,然後進行括號匹配,如果匹配成功,則讓已經匹配成功的左括號出棧,繼續進行匹配,直到外部的括...