這個是一個括號匹配問題,可以說刷leetcode以來這是我一次有自己設計算法,可能不盡如人意,我主要是運用了一個字典,給每一個括號一一個整數值,方便接下來的計算過程。整個代碼流程就是:
1,判斷字符串長度是奇數還是偶數,如果奇數直接報錯
2,如果遇到的是前置括號就將其存入一個list,知道遇到下一個後置括號
3,在遇到後置括號的時候先檢查臨時list是否有內容,如沒有直接報錯,如有就與臨時list最後一個元素進行匹配,匹配成功就將臨時list刪除末尾元素,反覆如此,如沒有匹配成功報錯
注;想法在於驗證條件引入了臨時list,成功匹配的條件一定有臨時list爲空
s = input() length = len(s) d = {'(':1, '[':2, '{':3, '}':4, ']':5, ')':6,} i = 0 b = [] i = 0 sign = 0 if length % 2 != 0: print(False) else: for i in range(length): if d[s[i]] < 4: b.append(s[i]) else: if len(b) == 0 and d[s[i]] > 3: print(False) sign = 1 break else: if d[s[i]] + d[b[-1]] == 7: b.pop() else: print(False) sign = 1 break sign = 0 if sign == 0 and len(b) == 0: print(True) else: print(False)