我最近在學習python3,基礎不是很好,所以準備在Leetcode上刷題,這個作為筆記記錄我的,如果大家看到有錯誤,拜托大家幫我指出,謝謝啦~ ...
給定一個只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字元串,判斷字元串是否有效。
有效字元串需滿足:
- 左括弧必須用相同類型的右括弧閉合。
- 左括弧必須以正確的順序閉合。
註意空字元串可被認為是有效字元串。
示例 1:
輸入: "()" 輸出: true
示例 2:
輸入: "()[]{}" 輸出: true
示例 3:
輸入: "(]" 輸出: false
示例 4:
輸入: "([)]" 輸出: false
示例 5:
輸入: "{[]}" 輸出: true
class Solution: def isValid(self, s): stack = [] flag = 1 if(len(s)%2!=0): #如果長度為奇數則一定沒有匹配成功 flag = 0 else: for i in range(len(s)): if s[i] == "(" or s[i] == "[" or s[i] == "{": stack.append(s[i]) continue if stack: a = stack[len(stack)-1] #取棧頂元素 if s[i] == ")": #如果括弧可以匹配成功,則相應的左括弧右括弧的位置是相對的,所以可以取出棧頂元素進行比較 if a != "(": flag = 0 stack.pop() elif s[i] == '}': if a != "{": flag = 0 stack.pop() elif s[i] == "]": if a != "[": flag = 0 stack.pop() if stack != []: #如果掃描過一遍仍有元素在棧內,說明有的括弧沒有匹配到,則沒有匹配成功 flag = 0 if flag == 1: return True else: return False
這個代碼還沒有Bugfree,有時間我會改進的~~,歡迎大家指出我的錯誤和不足之處~~~一起加油~