首页 > 试题广场 >

括号配对问题

[编程题]括号配对问题
  • 热度指数:10569 时间限制: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

说明

提取括号后为 `[()]`,是合法括号序列。
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)