題目連結

https://zerojudge.tw/ShowProblem?problemid=b304

Online Judge

參考文章

X

本題要點

只要是輸入右半部分的符號都需要與左半部分配對,無法配對就表示這是一個不合法的運算式,輸出 “No”;全部都合法配對即輸出 “Yes”。

下列是我在解題時想到的不合法例子

"""
1. 出現右半部時無法與左半部配對
)()

([)]

2. 前面都配對成功 結尾多一個左半無法配對
()()(

"""

用堆疊來解決這題,凡是出現左括號 “ ( ” or “ [ ” 就將它加入 stack 當中

當出現右括號 “ ) ” or “ ] ” 時,去判斷是否可以與 stack 當中的最後一個配對

如果可以配對就將 stack 的最後一個元素移除( pop )

例如現在 stack = [ ” ( ” , “ [ “ ] cur 在字串中讀取到 “ ] “ 這是一個合法配對

配對成功,所以移除他,現在 stack = [ ” ( ” ] 即可繼續查驗下個元素