LeetCode刷題記錄——第二十題(有效的括號)
阿新 • • 發佈:2018-12-19
20.有效的括號
題目描述
給定一個只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例1:
輸入: “()”
輸出: true
示例2:
輸入: “(]”
輸出: false
思路分析
- 確定括號是否匹配的方法:利用字典的key-value對,將前一項pop出來看是否對應著字典中的value值
- 當第一個字元為正括號時,append進臨時儲存的List中
- 正括號正常匹配,
- 匹配錯誤
- 當第一個字元為反括號時,不符合規則,返回False(這一點需要注意處理)
程式碼實現
class Solution:
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
mp ={ ']':'[' , '}':'{' , ')':'(' }
temp = []
for ch in s:
if ch in '[{(':
temp.append(ch)
else:
if not temp or mp[ch] != temp.pop(): #前一個用來保證第一個ch不是反括號
return False
return not temp