給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串 s ,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
將左括號進棧,當遇到右括號時與棧頂元素進行括號匹配,左右括號不匹配或者棧為空時退出,匹配則彈出棧頂元素,最後判斷棧是否為空,為空則說明所有的括號都匹配了,反之則存在不匹配的括號
bool
isvalid
(string s)')
return
false
; leftstack.
push
(s[0])
;for
(int i =
1; i < s.
size()
;++i)')
leftstack.
pop();
//當前括號與棧頂左括號不匹配時退出
else
return
false;}
if(leftstack.
empty()
)return
true
;return
false
;}
棧的應用之括號匹配
在許多正文中都有括號,特別是在表示程式 數學表示式的正文片段裡,括號有正確配對問題。作為例子,下面考慮python程式裡的括號,在這裡可以看到 不難總結出檢查括號配對的原則 在掃瞄正文過程中,遇到的閉括號應該與此前最近遇到且尚未獲得匹配的開括號配對。如果最近的未匹配開括號與當前閉括號不配對,或者找不...
棧的應用之括號匹配檢驗
棧結構具有後進先出的固有特性,在程式設計中很有幫助。這裡舉乙個例子,將棧應用與括號匹配的檢驗。假設表示式中允許三種括號 小括號 中括號和大括號,巢狀的順序任意。等均為正確格式。檢驗括號是否匹配可用 期待的急迫程度 來描述。接收乙個正括號後,計算機期待著乙個與之匹配的反括號。如果此時接收到乙個反括號,...
棧的簡單應用之括號匹配
include include include define emptytos 1 define minstacksize 5 typedef char elementtype struct stackrecord typedef struct stackrecord stack int isemp...