题目描述
解题思路
不要被事例骗到,没有事例中写的那么简单,其中还包括([ ])这种例子。如果是计算机本专业的同学来说,一眼看出来,需要使用栈的数据结构。在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 Falseitem=result.pop()if s[i]=="}":if item!="{":return Falseelif s[i]==")":if item!="(":return Falseelif s[i]=="]":if item!="[":return Falseelse:continueif result==[]:return Trueelse: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