题目描述
解题思路
不要被事例骗到,没有事例中写的那么简单,其中还包括([ ])这种例子。如果是计算机本专业的同学来说,一眼看出来,需要使用栈的数据结构。在python中需要使用列表进行。如果匹配的是左括号,就将当前符号加入列表,如果是右括号,那么判断符号的类型(大,中,小),进行出栈,如果出队的元素的和当前访问的元素是一对,那么不做处理,如果不是一对,直接返回False即可,等到最后的时候,如果遍历完所有的元素,栈为空,说明所有的元素均符合规则。除此之外,我们还需要考虑的一种情况就是只有右边括号,如果此时栈为空,那么直接return False。
代码实现
class Solution:
def isValid(self, s: str) -> bool:
#判断字符的长度,借助列表
result=[]
for i in range(0,len(s)):
if s[i]=="{":
result.append(s[i])
elif s[i]=="(":
result.append(s[i])
elif s[i]=="[":
result.append(s[i])
else:
if result==[]:
return False
item=result.pop()
if s[i]=="}":
if item!="{":
return False
elif s[i]==")":
if item!="(":
return False
elif s[i]=="]":
if item!="[":
return False
else:
continue
if result==[]:
return True
else:
return False
# sum=0
# for i in range(0,len(s)):
# i=i+sum
# if i>=len(s):
# break
# if s[i]=="(":
# if i+1>=len(s):
# return False
# else:
# if s[i+1]!=")":
# return False
# else:
# sum=sum+1
# continue
# elif s[i]=="[":
# if i+1>=len(s):
# return False
# else:
# if s[i+1]!="]":
# return False
# else:
# sum=sum+1
# continue
# elif s[i]=="{":
# if i+1>=len(s):
# return False
# else:
# if s[i+1]!="}":
# return False
# else:
# sum=sum+1
# continue
# return True