zoukankan      html  css  js  c++  java
  • 括号序列 是否是 合法的

    你需要判断一个 括号序列 是否是 合法的 。
    一个字符串s是 合法的括号序列,当且仅当以下条件同时满足:

    1. 只包含这些字符:(, ), {, }, [, or ]
    2. s是空串 || s是某个合法的括号序列左右用一对同类型括号括起来 || s是若干个合法的括号序列左右拼接而成

    给你n个字符串,请判断每个字符串是否是一个 合法的括号序列

    输入

    第一行是一个整数n,表示有n个字符串需要判断。
    接下来n行每行表示待判断的字符串。

    n和每个字符串的长度都不超过1000。

    输出

    输出n行,第i行是YES或者NO,表示输入中的第i个串是否是 合法的括号序列

    输入样例

    3
    {[()]}
    {[(])}
    {{[[(())]]}}

    输出样例

    YES
    NO
    YES

    提示

    第二个样例中,[]和()交叉了,所以不算是 合法的括号序列

    import sys
    
    input_l, n, c = [], 0, 0
    for line in sys.stdin:
        if c == 0:
            n = int(line)
            c = 1
        else:
            input_l.append(line.replace('
    ',''))
            if len(input_l) == n:
                break
    
    def r0(s):
        if len(s) % 2 == 1:
            return False
        return True
    
    def r1(s):
        ok_s_l = ['{', '[', '(', ')', ']', '}']
        s = s.replace(' ', '')
        for i in ok_s_l:
            s = s.replace(i, '')
        if s == '':
            return True
        return False
    
    
    def r2(s):
        ok_p_l = ['{}', '[]', '()']
        while True:
            c=len(s)
            for i in ok_p_l:
                s = s.replace(i, '')
            if len(s)==0:
                return True
            if c==len(s):
                return False
    
    
    res_l = []
    for i in input_l:
        if not r0(i):
            res_l.append('NO')
        elif not r1(i):
            res_l.append('NO')
        elif not r2(i):
            res_l.append('NO')
        else:
            res_l.append('YES')
    
    res = '
    '.join(res_l)
    
    sys.stdout.write(res)
    

      

    最后一个规则即可

  • 相关阅读:
    面向对象七大设计原则
    S2第六章
    S2第四章
    大数据Hadoop——HDFS Shell操作
    大数据Hadoop——初识Hadoop
    ssh整合oracle数据源报错????
    关于Struts2的通配方法、转发重定向
    SSH实现ajax
    关于Struts2自动装配和访问Servlet API
    Oracle函数
  • 原文地址:https://www.cnblogs.com/rsapaper/p/9440430.html
Copyright © 2011-2022 走看看