20. 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "(]"
输出:false
点击查看代码
def isValid(self, s: str) -> bool:
stk = []
for c in s:
# 如果c是 ({[ 则入栈
if c in ['(','[','{']:
stk.append(c)
# 如果c是 )}] 并且栈不为空 则 判断栈顶是否为与之对应的左括号 是则出栈,不是则返回fasle
elif c == ')' and stk and stk[-1] == '(':
stk.pop();
elif c == ']' and stk and stk[-1] == '[':
stk.pop();
elif c == '}' and stk and stk[-1] == '{':
stk.pop()
else:
# 如果c是 )}] 栈为空 那么返回false
# 如果c是 )}] 栈不为空, 但是 栈顶不是与c对应的左括号 那么返回false
return False
# 例如"(){}[" ,如果最后栈不为空,那么就是有多余的左括号了
return not stk
点击查看pycharm代码
class Solution:
def isValid(self, s: str) -> bool:
stk = []
for c in s:
# 如果c是 ({[ 则入栈
if c in ['(','[','{']:
stk.append(c)
# 如果c是 )}] 并且栈不为空 则 判断栈顶是否为与之对应的左括号 是则出栈,不是则返回fasle
elif c == ')' and stk and stk[-1] == '(':
stk.pop();
elif c == ']' and stk and stk[-1] == '[':
stk.pop();
elif c == '}' and stk and stk[-1] == '{':
stk.pop()
else:
# 如果c是 )}] 栈为空 那么返回false
# 如果c是 )}] 栈不为空, 但是 栈顶不是与c对应的左括号 那么返回false
return False
# 例如"(){}[" ,如果最后栈不为空,那么就是有多余的左括号了
return not stk
if __name__ == '__main__':
# n = str(input('please input 要匹配的括号:'))
# solution= Solution()
# print(solution.isValid(n))
n='([{{}}])'
solution= Solution()
print(solution.isValid(n))
测试


浙公网安备 33010602011771号