Leetcode——20. 有效的括號
給定一個只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: “()”
輸出: true
示例 2:
輸入: “()[]{}”
輸出: true
示例 3:
輸入: “(]”
輸出: false
示例 4:
輸入: “([)]”
輸出: false
示例 5:
輸入: “{[]}”
輸出: true
思路:
由於要匹配的括號是成對出現順序的,所以可以使用棧這個資料結構去append,pop。
class Solution:
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
leftP = '([{'
rightP = ')]}'
stack = [] #空棧定義
for char in s:
if char in leftP:
stack.append(char) #遇到左括號就加入stack
if char in rightP:
if not stack: #若棧為空就返回false
return False
tmp = stack.pop() #有右邊括號的話就把原stack裡的括號pop掉一個
#接下來就看是不是匹配
if char == ')' and tmp != '(':
return False
if char == ']' and tmp != '[':
return False
if char == '}' and tmp != '{':
return False
return stack == []
還有用字典來存放的
時間複雜度O(N),空間複雜度也是O(N)
class Solution:
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
stack = []
dict = {"]": "[", "}": "{", ")": "("}#字典存放鍵值對,括號對
for char in s:
if char in dict.values():
stack.append(char)
elif char in dict.keys():
if stack == [] or dict[char] != stack.pop():
return False
else:
return False
return stack == []
相關文章
- LeetCode 20. 有效的括號LeetCode
- 【LeetCode】 20.有效的括號LeetCode
- 20. 有效的括號
- [leetcode]有效的括號LeetCode
- Leetcode20. 有效的括號LeetCode
- 【LeetCode-棧】有效的括號LeetCode
- LeetCode有效的括號(Python)LeetCodePython
- LeetCode-20. 有效的括號(棧模擬)LeetCode
- Leetcode 20 有效的括號valid-parentheses(棧)LeetCode
- 最長有效括號
- [LeetCode] Longest Valid Parentheses 最長有效括號LeetCode
- 每日一題: 有效括號每日一題
- LeetCode 之 JavaScript 解答第20題 —— 有效的括號(Valid Parentheses)LeetCodeJavaScript
- [Go 演算法]20:有效括號(棧)Go演算法
- 括號生成-LeetCode22LeetCode
- leetcode:遞迴:括號生成LeetCode遞迴
- [LeetCode] Generate Parentheses 生成括號LeetCode
- 【leetcode】32. Longest Valid Parentheses 最長的有效匹配括號子串長度LeetCode
- 演算法題:判斷括號字串是否有效演算法字串
- 理解正規表示式中的括號 (),方括號 [] 和大括號 {}
- LeetCode 3: PairsOfParentheses (括號匹配問題)LeetCodeAI
- LeetCode-022-括號生成LeetCode
- [LeetCode] Valid Parentheses 驗證括號LeetCode
- LeetCode - 22. 括號的生成(遞迴)1LeetCode遞迴
- Python有效括號字串判斷和深度計算Python字串
- 讓我們一起啃演算法----有效的括號演算法
- c++物件建立帶括號與無括號的區別C++物件
- JavaScript中圓括號()和方括號[]的一個特殊用法JavaScript
- 【leetcode】22. Generate Parentheses 合法括號串的所有組合LeetCode
- Matlab中的括號()[]{}Matlab
- 括號畫家
- 【棧】括號匹配
- JSON 字串中的中括號和大括號區別詳解JSON字串
- JavaScript 函式呼叫時帶括號和不帶括號的區別JavaScript函式
- 【leetcode】leetcode22括號生成通過程式碼及題解LeetCode
- [PHP字串]②--花括號{}的作用PHP字串
- Shell 括號總結
- Swift之花括號Swift