20. 有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "(]"
输出:false

点击查看代码
    def isValid(self, s: str) -> bool:
        stk = []
        for c in s:
            # 如果c是 ({[ 则入栈
            if c in ['(','[','{']:
                stk.append(c)
            # 如果c是 )}] 并且栈不为空 则 判断栈顶是否为与之对应的左括号 是则出栈,不是则返回fasle
            elif c == ')' and stk and stk[-1] == '(':
                stk.pop();
            elif c == ']' and stk and stk[-1] == '[':
                stk.pop();
            elif c == '}' and stk and stk[-1] == '{':
                stk.pop()
            else:
                # 如果c是 )}] 栈为空 那么返回false
                # 如果c是 )}] 栈不为空, 但是 栈顶不是与c对应的左括号 那么返回false
                return False
        # 例如"(){}[" ,如果最后栈不为空,那么就是有多余的左括号了
        return not stk
点击查看pycharm代码
class Solution:
    def isValid(self, s: str) -> bool:
        stk = []
        for c in s:
            # 如果c是 ({[ 则入栈
            if c in ['(','[','{']:
                stk.append(c)
            # 如果c是 )}] 并且栈不为空 则 判断栈顶是否为与之对应的左括号 是则出栈,不是则返回fasle
            elif c == ')' and stk and stk[-1] == '(':
                stk.pop();
            elif c == ']' and stk and stk[-1] == '[':
                stk.pop();
            elif c == '}' and stk and stk[-1] == '{':
                stk.pop()
            else:
                # 如果c是 )}] 栈为空 那么返回false
                # 如果c是 )}] 栈不为空, 但是 栈顶不是与c对应的左括号 那么返回false
                return False
        # 例如"(){}[" ,如果最后栈不为空,那么就是有多余的左括号了
        return not stk

if __name__ == '__main__':
    # n = str(input('please input 要匹配的括号:'))
    # solution= Solution()
    # print(solution.isValid(n))
    n='([{{}}])'
    solution= Solution()
    print(solution.isValid(n))

测试

image

posted @ 2022-12-14 13:34  辛宣  阅读(27)  评论(0)    收藏  举报