根据题意,我们可以推断出以下要点:
有效括号字符串的长度,一定是偶数!
右括号前面,必须是相对应的左括号,才能抵消!
右括号前面,不是对应的左括号,那么该字符串,一定不是有效的括号!
题解:https://leetcode.cn/problems/valid-parentheses/solution/guan-fang-tui-jian-ti-jie-you-xiao-de-gu-zyzg/
看了一下题解,思路很简单,就是用列表模拟栈存储左括号,用字典将右括号作为键,左括号作为值;
首先先判断是左括号还是右括号,左括号放入栈,是右括号的话,与栈中的左括号进行匹配,匹配成功后将栈中的左括号pop出来
代码:
def isValid(s):
if len(s)&1 != 0:
return False
dicts = {
"}": "{",
"]": "[",
")": "(",
}
stack = []
for i in s:
if i not in dicts:
stack.append(i)
else:
if stack[-1] != dicts[i] or not stack:
return False
stac.pop()
return not stack
我自己的解法,比较暴力:
def isValid(s):
while "{}" in s or "[]" in s or "()" in s:
s = s.replace("{}", "")
s = s.replace("[]", "")
s = s.replace("()", "")
return s == ""