首页 > 试题广场 >

括号配对问题

[编程题]括号配对问题
  • 热度指数:15710 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定一个字符串 S,请检查字符串中仅由括号字符 \texttt{`['}\texttt{`]'}\texttt{`('}\texttt{`)'} 组成的子序列是否构成合法括号序列。合法括号序列的定义如下:

\hspace{23pt}\bullet\,空序列是合法括号序列;

\hspace{23pt}\bullet\,如果 A 是合法括号序列,则 `(A)` 和 `[A]` 都是合法括号序列;

\hspace{23pt}\bullet\,如果 AB 都是合法括号序列,则它们的拼接 AB 也是合法括号序列。

\hspace{15pt}字符串 S 可能包含其他字符,但只需考虑括号部分,忽略其他字符。

输入描述:
\hspace{15pt}在一行中输入一个字符串 S,长度 1 \leqq |S| \leqq 10^4,由可见字符组成。


输出描述:
\hspace{15pt}如果字符串 S 中的括号部分能构成合法括号序列,则输出 \texttt{true};否则输出 \texttt{false}
示例1

输入

abcd(])[efg

输出

false

说明

提取括号 `(`、`)`、`[`、`]` 后为 `(])[`,不是合法括号序列。
示例2

输入

a[x(y)z]

输出

true

说明

提取括号后为 `[()]`,是合法括号序列。
s = input()
rule = ["[","]","(",")"]
list_r = [["[","]","(",")"],["(",")","[","]"],["(","[","]",")"],["[","(",")","]"],["(",")"],["[","]"]]
list_s = []
list_n = []
n = 1
for i in s:
    if i in rule:
        list_s.append(i)
if len(list_s)<=4:
    if list_s in list_r:
        res = "true"
    else:
        res = "false"
if len(list_s)>4:
    while len(list_s)> 4:
        list_n = list_s[-4:]
        list_s = list_s[:-4]
        if list_n in list_r:
            res = "true"
        else:
            res = "true"
    if len(list_s)<=4:
        if list_s in list_r:
            res = "true"
        else:
            res = "false"
print(res)


史山代码
发表于 2025-11-19 14:32:56 回复(1)
import sys

a, s, t = "", "", []
for line in sys.stdin:
    a = line.split()
for i in a[0]:
    if i in "()[]":
        s += i
for j in s:
    if len(t) == 0:
        t.append(j)
    else:
        t.pop(-1) if t[-1] + j in ["()", "[]"] else t.append(j)
print("true" if not t else "false")
发表于 2025-11-14 08:50:32 回复(0)
import sys
source_str = ""
for line in sys.stdin:
    source_str = line.split()

dest_str = ""
for m in source_str[0]:
    if m in "()[]":
        dest_str += m

stack =[]

for c in dest_str:

    if len(stack) == 0 :
         stack.append(c)
    else:
        if (stack[-1]+c) in ['()', '[]']:
            stack.pop(-1)
        else:
            stack.append(c)

if len(stack) == 0:
    print("true")
else:
    print("false")
发表于 2025-11-12 06:57:17 回复(0)
import sys

for line in sys.stdin:
    s = line.strip()
    stack = []
    pairs = {')': '(', ']': '['}
    
    for char in s:
        if char in '([':
            stack.append(char)
        elif char in pairs:
            if not stack&nbs***bsp;stack.pop() != pairs[char]:
                print("false")
                break
    else:
        print("true" if not stack else "false")

发表于 2025-10-30 20:20:49 回复(0)
a = list(input())
temp =[]
res = 1
for aaa in a:
    if aaa == '('&nbs***bsp;aaa=='[':
        temp.append(aaa)
    elif aaa==')':
        if temp:
            temp2 = temp.pop()
            if temp2!= '(':
                res = 0
                print('false')
                break
        else:
            res = 0
            print('false')
            break
    elif aaa==']':
        if temp:
            temp2 = temp.pop()
            if temp2!= '[':
                res = 0
                print('false')
                break
        else:
            res = 0
            print('false')
            break
if res:
    print("true")
防御型代码你值得拥有
发表于 2025-09-06 00:20:37 回复(0)
A = list(map(str,input().strip()))
legal_arr = []

brask = {'(':')','[':']'}

for a in A:
    if a in '()[]':
        if a in brask: #是左括号
            legal_arr.append(a)
        elif a in brask.values(): #是右括号
            if not legal_arr&nbs***bsp;brask[legal_arr[-1]] != a: 
                #为空或者前面的不是左括号,此时肯定大于1,结束函数并输出false
                print('false')
                exit()
            legal_arr.pop() #不为空且前面的是左括号,弹出前面的和不存当前的右括号

print('true' if not legal_arr else 'false')

发表于 2025-07-23 17:15:23 回复(0)
n = input()
import re
a = re.findall('\([a-zA-Z0-9]+\)',n)
a1 = re.findall('\[[a-zA-Z0-9]+\]',n)

if a or a1 or ('([])' in n and (n.count(')') == n.count('(') and n.count(']') == n.count('[')) or '[()]' in n and (n.count(')') == n.count('(') and n.count(']') == n.count('['))):
    print('true')
else:
    print('false')
耗时有点久
发表于 2025-06-16 15:11:08 回复(0)