题解 | #有效括号序列#

有效括号序列

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

借助栈结构,遍历字符串:

  • 遇到左括号,则入栈
  • 遇到右括号,跳出栈顶元素,与右括号进行比较,判断是否匹配。若匹配,则继续;若不匹配,则不合法。

此外,要特别注意两种情况: A.开始就遇到右括号,直接判断不合法;

B.结束时,栈内还存在左括号,也不合法;

# 
# @param s string字符串 
# @return bool布尔型
#
class Solution:
    def isValid(self , s: str) -> bool:
        stack = []
        for i in range(len(s)):
            # 遇到左括号加入
            if s[i] in ['(','[','{']:
                stack.append(s[i])
            # 遇到右括号
            else:
                # 如果开始为空,不合法
                if not stack:
                    return False
                # 如果开始不为空,与栈顶元素比较
                else:
                    if s[i] == ')':
                        # 若相同,则抵消,继续
                        if stack.pop() == '(':
                            continue
                        # 若不同,则不合法
                        else:
                            return False
                    elif s[i] == ']':
                        if stack.pop() == '[':
                            continue
                        else:
                            return False
                    elif s[i] == '}':
                        if stack.pop() == '{':
                            continue
                        else:
                            return False
        if not stack:
            return True
        else:
            return False
                    
                    
        
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务