
括号序列
发布日期:2021-05-07 06:54:33
浏览次数:20
分类:精选文章
本文共 1471 字,大约阅读时间需要 4 分钟。
括 号 序 列 括号序列 括号序列
题目链接:
题目
定义如下规则序列(字符串):
- 空序列是规则序列
- 如果 S S S是规则序列,那么 ( S ) (S) (S)和 [ S ] [S] [S]也是规则序列
- 如果 A A A和 B B B都是规则序列,那么 A B AB AB也是规则序列
例如,下面的字符串都是规则序列:
( ) () (), [ ] [] [], ( ( ) ) (()) (()), ( [ ] ) ([]) ([]), ( ) [ ] ()[] ()[], ( ) [ ( ) ] ()[()] ()[()]而以下几个则不是:
( ( (, [ [ [, ] ] ], ) ( )( )(, ( ) ) ()) ()), ( [ ( ) ([() ([()现在,给你一些由 ‘ ( ’ ‘(’ ‘(’, ‘ ) ’ ‘)’ ‘)’, ‘ [ ’ ‘[’ ‘[’, ‘ ] ’ ‘]’ ‘]’构成的序列,你要做的,是补全该括号序列,即扫描一遍原序列,对每一个右括号,找到在它左边最靠近它的左括号匹配,如果没有就放弃。在以这种方式把原序列匹配完成后,把剩下的未匹配的括号补全。
输入
输入文件仅一行,全部由 ‘ ( ’ ‘(’ ‘(’, ‘ ) ’ ‘)’ ‘)’, ‘ [ ’ ‘[’ ‘[’, ‘ ] ’ ‘]’ ‘]’组成,没有其他字符,长度不超过 100 100 100。
输出
输出文件也仅有一行,全部由 ‘ ( ’ ‘(’ ‘(’, ‘ ) ’ ‘)’ ‘)’, ‘ [ ’ ‘[’ ‘[’, ‘ ] ’ ‘]’ ‘]’组成,没有其他字符,把你补全后的规则序列输出即可。
样例输入
([()
样例输出
()[]()
样例解释
将前两个左括号补全即可。
思路
这道题直接用栈模拟。
把不能配对的找出来,然后输出时在输出字符串的同时输出要配对的字符的配对字符,就可以了。代码
#include#include using namespace std;int c[101];char a[101], b[101];int main() { scanf("%s", &a);//读入 for (int i = 0; i < strlen(a); i++) { if (a[i] == '(') c[++c[0]] = i, b[i] = ')';//记录为左小括号 else if (a[i] == '[') c[++c[0]] = i, b[i] = ']';//记录为左中括号 else { if (!c[0] || b[c[c[0]]] != a[i]) { //不能能配对 if (a[i] == ')') b[i] = '(';//记录为右小括号 else b[i] = '[';//记录为右中括号 } else b[c[c[0]--]] = ' ';//能配对 } } for (int i = 0; i < strlen(a); i++) { if (b[i] == '(' || b[i] == '[') printf("%c", b[i]);//多出来右括号 printf("%c", a[i]);//之前的数组 if (b[i] == ')' || b[i] == ']') printf("%c", b[i]);//多出来左括号 } return 0;}
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月09日 18时07分03秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【ASP.NET】ASP.NET中权限验证使用OnAuthorization实现
2021-05-08
02、MySQL—数据库基本操作
2021-05-08
OpenJDK1.8.0 源码解析————HashMap的实现(一)
2021-05-08
MySQL-时区导致的时间前后端不一致
2021-05-08
2021-04-05阅读小笔记:局部性原理
2021-05-08
go语言简单介绍,增强了解
2021-05-08
python file文件操作--内置对象open
2021-05-08
架构师入门:搭建基本的Eureka架构(从项目里抽取)
2021-05-08
MongoDB 快速扫盲贴
2021-05-08
EXTJS4.2——10.Tab+Iframe
2021-05-08
one + two = 3
2021-05-08
sctf_2019_easy_heap
2021-05-09
PyQt5之音乐播放器
2021-05-09
Redis进阶实践之十八 使用管道模式提高Redis查询的速度
2021-05-09
SQL注入
2021-05-09
MPI Maelstrom POJ - 1502 ⭐⭐ 【Dijkstra裸题】
2021-05-09
Problem A - Sequence with Digits (数学推导)
2021-05-09
Problem 330A - Cakeminator (思维)
2021-05-09
LeetCode75 颜色分类 (三路快排C++实现与应用)
2021-05-09
C语言+easyX图形库的推箱子实现
2021-05-09