LintCode python 小白-簡單題-423有效的括號序列
阿新 • • 發佈:2019-02-20
題目:給定一個字串所表示的括號序列,包含以下字元: ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, 判定是否是有效的括號序列。
樣例:括號必須依照 “()” 順序表示, “()[]{}” 是有效的括號,但 “([)]”則是無效的括號。
思路:先定義一個字典,將左括號作為字典的鍵,右括號作為值,作為配對的依據。
然後迴圈字串,當得到左括號,放進列表中(棧),若得到右括號,先判斷列表有無左括號,如有,再與字典中棧頂元素為鍵的值匹配,判斷結果,最後再判斷最後的棧是否還存在元素,若存在代表還有左括號沒能被匹配,出錯。
程式碼:
class Solution:
# @param {string} s A string
# @return {boolean} whether the string is a valid parentheses
def isValidParentheses(self, s):
# Write your code here
if len(s)<=1:
return False
a=list(s)
b=[] #存放左括號的棧
c={'(':')','[':']','{':'}'} #字典儲存
for i in a:
if i in c: #如果是字典中的鍵,即左括號,放進棧
b.append(i)
else:
if len(b)==0: #先判斷是否有左括號存在
return False
else:
#字典得到該鍵的值==棧頂值對應的右括號
if c.get(b[-1])!=i:
return False
else:
del b[-1] #刪除棧頂元素
if len(b)!=0: #若還存在左括號,此時已沒有右括號,出錯
return False
return True