池州网站建设公司,网站建设方案 文库,惠城区城乡规划建设局网站,网站开发建设属于什么费用力扣题目链接
给定一个只包括 (#xff0c;)#xff0c;{#xff0c;}#xff0c;[#xff0c;] 的字符串#xff0c;判断字符串是否有效。
有效字符串需满足#xff1a;
左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效…
力扣题目链接
给定一个只包括 (){}[] 的字符串判断字符串是否有效。
有效字符串需满足
左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。
示例
输入()[]{}
输出true输入([)]
输出false
题干很简单因此我们直接分析代码完整代码如下
class Solution:def isValid(self, s: str) - bool:stack []for item in s:if item (:stack.append())elif item [:stack.append(])elif item {:stack.append(})elif not stack or stack[-1] ! item:return Falseelse:stack.pop()return True if not stack else False
首先定义一个空的stack接着进入字符串的循环判断三种类型的括号如果字符是括号左半部分则在stack中用append添加该类型括号的右半部分。
你可以这样理解从左开始最外层的括号对应的右半部分也是该组合括号的最外层最内层的括号对应的右半部分也是该组合括号的最内层这样才能构成有效的括号组。所以当遇到括号左半部分类似时就在stack中添加这样遇到括号右半部分按顺序出栈的时候才能完全抵消。
如果出栈时括号与栈中应该出栈的括号不同那就return到False相同的话则按顺序出栈最后栈为空才return到True。