LeetCode20-有效的括號-python
阿新 • • 發佈:2020-12-10
題目描述
給定一個只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/valid-parentheses
解題思路
1.首先判斷括號個數是否為偶數,不是則不可能配對成功。
2.建立字典,表示左右括號的對應關係,此處為左括號在字典中,右括號為值。
3.遍歷:如果是左括號->入棧;如果不是左括號—>出棧,並判斷出棧的左括號的值(dic裡的對應關係)與此次的括號(c)是否一致:若一致則配對成功。
以上為個人思路,如有不對請各位大佬指正~
程式碼
class Solution:
def isValid(self, s: str) -> bool:
if len(s)%2==1:
return False
dic ={ '(':')', '[':']', '{':'}'} # 建立字典,表示左右括號的對應關係
stack = []
for c in s:
if c in dic:
stack.append(c)
else :
if len(stack)==0: #判斷棧為空?
return False
else:
top = stack.pop() #棧頂元素
if c != dic[top]: #進來的括號不等於棧頂左括號對應
return False
return not stack