题解 | #合法的括号字符串#

合法的括号字符串

https://www.nowcoder.com/practice/eceb50e041ec40bd93240b8b3b62d221

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param s string字符串 
# @return bool布尔型
#
class Solution:
    def isValidString(self , s: str) -> bool:
        # write code here
        
        #定义2个空栈,一个用来存放左括号,一个用来存放*号,遇到右括号的时候先出stack1,当stack1为空的时候,再出stack2,当stack2为空的时候,返回False
        #print("ok")
        stack1=[]
        stack2=[]
        #print(s)
        for x in range(len(s)):
            if s[x] == "(":
                stack1.append(x)
            elif s[x]=="*":
                stack2.append(x)
            elif s[x]==")":
                if len(stack1)>0:
                    stack1.pop()
                elif len(stack2)>0:
                    stack2.pop()
                else:
                    return False
        print(stack1)
        print(stack2)
    #如果比较完,stack1等于0的话,说明括号已经完全匹配了,返回true即可
        if len(stack1) ==0:
            return True
    

    #如果说stack1大于0,并stack2大于0.stack1的元素比stack2多,需要比较stack1中的括号的位置与*的索引顺序,小于*Hao的索引才能匹配,大于星号则永远不能匹配,当stack1中的元素pop完退出while循环或者当stack1中的元素的pop值比stack2还大,需要将pop出的元素append回来直接break出循环体,最后通过比较stack1中的元素数量如果为空了,就匹配成功了说明,否则匹配失败
        elif len(stack1)>0 and len(stack2)>0 and len(stack1)<=len(stack2) :
		#当stack1中的元素pop完退出while循环
            while len(stack1)>0  : 
                x=int(stack1.pop())
                y=int(stack2.pop())
                print(stack1,x,y)
			#比较stack1中的括号的位置与*的索引顺序,小于*Hao的索引才能匹配
                if x<y:
                    pass              
                else:
				  #或者当stack1中的元素的pop值比stack2还大,需要将pop出的元素append回来直接break出循环体
                    stack1.append(x)
                    break
            print(stack1) 
		#最后通过比较stack1中的元素数量如果为空了,就匹配成功了说明
            if  len(stack1) ==0:
                return True      
		#说明stack1和星号没有完全匹配,匹配失败
            else:
                return False
        else:
            return False

全部评论

相关推荐

01-24 12:50
门头沟学院 C++
投票
菜狗二号:还有啥想的 指定国有行啊,去了就开始幸福美满的生活了,选华子不是折腾自己么,最终财富积累度是差不多的,但是幸福指数是相差甚远的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务