题目:
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入:"()"
输出: true
示例 2:
输入:"()[]{}"
输出: true
注:本题笔者思路为:逐次剔除连续前后位置括号有效的元素。
def kuohao(a):
a = list(str(a))
b1 = ['(','{','[',')','}',']'] #用b1的前三个元素与b2的前三个元素来判断括号是否有效
b2 = [')','}',']','(','{','[']
for j in range(0,len(a)): #假设循环判断次数最多为len(a)
if a == []: #如果为空列表,则中止循环
break
d = []
i = 0
while i<len(a)-1:
if b1.index(a[i]) == b2.index(a[i+1]): #用b1的前三个元素与b2的前三个元素来判断括号是否有效
i = i+2
continue
d.append(a[i]) #只保存前后括号无效的元素
i = i+1
if b1.index(a[len(a)-2]) != b2.index(a[len(a)-1]): #用b1的前三个元素与b2的前三个元素来判断括号是否有效
d.append(a[len(a)-1])
a = d
if a == []:
print('ture')
else :
print('false')
运行结果:
注:本题目来源于:https://mp.weixin.qq.com/s/B6JCb36jlmzBlwVSzC7x7Q
如有侵权,请联系删除。
本题目结果由笔者自己思考并编写代码进行实现,如有错误,欢迎指出,谢谢~
由于笔者今晚时间有限,未能非常明确解释思路,如需请教,可联系1143993831@qq.com