1. 程式人生 > >LintCode python 小白-簡單題-423有效的括號序列

LintCode python 小白-簡單題-423有效的括號序列

題目:給定一個字串所表示的括號序列,包含以下字元: ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ 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