题目名称 | 4030. 最长括号匹配 |
---|---|
输入输出 | bracket.in/out |
难度等级 | ★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 512 MiB |
测试数据 | 10 |
题目来源 |
|
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:1, 提交:2, 通过率:50% | ||||
|
100 | 0.107 s | 7.21 MiB | C++ |
|
50 | 1.119 s | 3.27 MiB | C++ |
关于 最长括号匹配 的近10条评论(全部评论) |
---|
我们对"合法的括号序列"进行以下定义:
1.空序列是一个合法的括号序列;
2.如果s是合法的括号序列,则(s)和[s]是合法的括号序列;
3.如果a和b是合法的括号序列,则ab是合法的括号序列;
4.没有其他序列是合法的括号序列。
例如,以下所有字符序列都是合法的括号序列:
(), [], (()), ()[], ()[()]
而以下字符序列则不是:
(, ], )(, ([)], ([(]
给定一个字符组成的括号序列s=a1a2a3...an,您的目标是找到最长的合法括号序列的长度,该括号序列是s的子序列。也就是说,您希望找到最大的m,对于下标i1,i2,...,im,其中1<=i1<i2<...<im<=n,序列ai1ai2...aim是一个合法括号序列。
给定初始序列s=([([]])],其最长的合法括号子序列为[([])],长度为6。
输入文件包含多个测试数据(不超过10个)。每个测试数据由一行组成,仅包含字符'(',')','['和']' ,每个字符串的长度在1到100之间。文件结尾用"end"表示结束。
对于输入文件中的每个测试数据,在一行输出最长的合法括号子序列的长度。
((())) ()()() ([]]) )[)( ([][][) end
6 6 4 0 6
在此键入。
在此键入。