給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入:"()"
輸出:true
示例 2:
輸入:"(){}"
輸出:true
示例 3:
輸入:"(]"
輸出:false
示例 4:
輸入:"([)]"
輸出:false
示例 5:
輸入:""
輸出:true
使用棧的思想。
若出現乙個右括號,判斷棧頂的是否為相匹配的左括號,是則出棧,否則入棧。遇到左括號就入棧。顯然,有效的括號一定保證最終棧為空,若出現乙個右括號,且棧已空,則一定無效。
步驟
初始化括號對應關係dict=":"
,stack=
。
遍歷括號字串s[i]
,遍歷區間[0,len(s))
:
若s[i]
為右括號:
若棧不為空:若棧頂括號和s[i]
匹配,則將棧頂退棧。否則:將當前右括號進棧。
若棧為空,返回false
。
若為左括號:將其入棧
返回棧是否為空
code如下:
class
solution
(object):
defisvalid
(self, s)
: dict1 =':
' s1 =
for i in s:
if i in dict1:
if s1:
if s1[-1
]== dict1[i]
: s1.pop(
)else
:else
:return
false
else
:return
not s1
可以簡化如下:
leetcode 有效的括號
題目 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 1.左括號必須用相同型別的右括號閉合。2.左括號必須以正確的順序閉合。示例1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 true includ...
leetcode 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...
LeetCode 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 本題需使用棧來解決,即遍歷字串,遇到左括號...