給定乙個只包括'(',')','','[',']'
的字串 s ,判斷字串是否有效。
有效字串需滿足
:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
輸入:s = 「()」輸出:true
輸入:s = 「(){}」輸出:true
輸入:s = 「(]」輸出:false
輸入:s = 「([)]」輸出:false
輸入:s = 「」實現這個演算法我們可以利用輸出:true
棧
的先進後出的特性,對於每個括號它需要找到與它匹配的括號。
我們先遍歷字串,將字串的字元存入到棧中,當匹配到結束的括號時,如果此時棧不為空
並且棧頂的字元與當前的括號相匹配時
,我們將棧頂的字元進行出棧操作,否則直接返回false
。如果最終棧為空表示每個括號都找到了匹配的結束括號,否則匹配失敗。
class
solution
:def
isvalid
(self, s:
str)
->
bool
:#如果字串是奇數一定不滿足條件
iflen
(s)%2!=
0:return
false
#定義乙個括號字典
bracket_dict =":
"#定義乙個棧
stack =
for c in s:
#當匹配到括號的結束符時
if c in bracket_dict:
#棧不能為空,並且棧頂要與結束的括號匹配
iflen
(stack)
>
0and bracket_dict[c]
== stack[-1
]:stack.pop(
)else
:return
false
else
:return
not stack
s = solution(
)print
(s.isvalid(
"(){}"))
print
(s.isvalid(
"([)]"
))
參考:leetcode詳解 js實現有效的括號 力扣
目錄 1 題目 2 輸入輸出 3 解法 使用棧 1 使用陣列儲存左右括號 2 使用map儲存對應的括號 4 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 ...
LeetCode使用Python實現有效的數獨
判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。上圖是乙個部分填充的有效的數獨。數獨部分空格內已填入了數字,空白格用 表示。示例1 輸入 5 3 7 6 1 9 5 9 8 6 8 6 3 4 8 3 1 7 2 6 6 2 8 4 1 9 5 8 7 9 輸出...
LeetCode使用python實現有效的括號
左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。例項1 輸入 輸出 true例項2 輸入 輸出 true例項3 輸入 輸出 false例項4 輸入 輸出 false例項5 輸入 輸出 true實現思路 1 去除字串中所有的空白字串 2 遍歷字串 2.1 遇...