牛客题霸 NC52 python版答案

括号序列

https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2

这一题的思路就是创建一个栈用来存储括号,具体思路如下:
1.如果栈为空则直接入栈,遍历下一个括号
2.若不为空且为(、[、{ 中一种则入栈
3.接下来依次比对括号是否为)、}、]中的一种,并与栈顶元素匹配,匹配则出栈,不匹配直接返回False
4.最后判断栈是否为空,为空则输出true,否则输出false

class Solution:
    def isValid(self , s ):
        # write code here
        stack = []
        for i in s:
            if not stack:
                stack.append(i)
                continue
            if i in ['(','{','[']:
                stack.append(i)
            elif i == '}' and stack[-1]== '{':
                stack.pop()
            elif i == ']' and stack[-1]== '[':
                stack.pop()
            elif i == ')' and stack[-1]== '(':
                stack.pop()
            else:
                return False
        return True if not stack else False
全部评论
栈空入栈有点问题,例如:输入")"这种字符串,无法在第一个字符的时候判断它是错误的。 再者,如果输入")))))))"会一直不停入栈,直至尾部。占用多余空间 提出问题:无法在第一时间发现输入字符串有问题,怎么改进代码解决? 解决方法: 遇到【左括号】:无条件入栈。 遇到【右括号】: 若与top不相容则 整个字符串有问题,返回false(例:"([)]") 相容则出栈遍历 字符串下一个字符 注:如果栈本身为空,当前遍历字符是【右括号】也判断为不相容。
1 回复 分享
发布于 2020-11-16 23:59

相关推荐

这不纯纯作弊了吗😢😢😢
编程界菜鸡:信这个的这辈子有了,这智商你靠啥都没用
你找工作的时候用AI吗?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务