P1241 括号序列 【模拟 + 栈】

这道题目要求根据给定的括号序列规则,完成序列的匹配和补全。规则序列需满足特定条件,如空序列、括号包围序列、两规则序列连接等。输入是一个不超过100个字符的括号序列,输出是补全后的规则序列。示例中,输入'([()',补全后的输出是'()',即将最靠近的左括号与右括号匹配,并补全剩余未匹配的括号。
摘要由CSDN通过智能技术生成

题目描述

定义如下规则序列(字符串):

1.空序列是规则序列;

2.如果S是规则序列,那么(S)和[S]也是规则序列;

3.如果A和B都是规则序列,那么AB也是规则序列。

例如,下面的字符串都是规则序列:

(),[],(()),([]),()[],()[()]

而以下几个则不是:

(,[,],)(,()),([()

现在,给你一些由‘(’,‘)’,‘[’,‘]’构成的序列,你要做的,是补全该括号序列,即扫描一遍原序列,对每一个右括号,找到在它左边最靠近它的左括号匹配,如果没有就放弃。在以这种方式把原序列匹配完成后,把剩下的未匹配的括号补全。
输入格式

输入文件仅一行,全部由‘(’,‘)’,‘[’,‘]’组成,没有其他字符,长度不超过100。
输出格式

输出文件也仅有一行,全部由‘(’,‘)’,‘[’,‘]’组成,没有其他字符,把你补全后的规则序列输出即可。
输入输出样例
输入 #1

([()

输出 #1

()

说明/提示

将前两个左括号补全即可。

#include <iostream>
#include <algorithm>
#include <stack>
using namespace std;

const int maxn = 1e5 + 10;
int vis[maxn]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值