思路:
先把符號輸入字典,每對符號的左半邊設定為位置,右半邊設定為值,方便後續進行比對。
利用出入棧的思想,設定棧stack
,將字串中的值c
push入棧直至c
不在字典裡。然後再將棧裡的值pop出來與c
對比,注意此時pop出來的值是字典的位置索引dic[stack.pop()]
,所對應的值應該是符號的右半邊。如果此時dic[stack.pop()]
與c
不相等,則說明不是一對,返回false
。
解法:
def
isvalid
( s:
str)
->
bool
: dic =',
'[':
']',
'(':
')',
'?':
'?'}
stack =
['?'
]#棧為空時stack.pop()會報錯,這裡賦乙個初值防止報錯。
for c in s:
elif dic[stack.pop()]
!= c:
return
false
return
len(stack)==1
print
(isvalid(
"([)]"
))
leetcode刷題(30) 20 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...
Leetcode刷題之 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...
leetcode刷題第6題 有效的括號
題目 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 1.左括號必須用相同型別的右括號閉合。2.左括號必須以正確的順序閉合。注意 空字串可被認為是有效字串。思路 我的初步想法是用棧。考察知識點 c 棧的使用 具體見 class solution return false for int i...