| 题目名称 | 4030. 最长括号匹配 |
|---|---|
| 输入输出 | bracket.in/out |
| 难度等级 | ★☆ |
| 时间限制 | 1000 ms (1 s) |
| 内存限制 | 512 MiB |
| 测试数据 | 10 |
| 题目来源 |
|
| 开放分组 | 全部用户 |
| 提交状态 | |
| 分类标签 | |
| 分享题解 |
| 通过:17, 提交:25, 通过率:68% | ||||
|
|
100 | 0.022 s | 1.68 MiB | C++ |
|
|
100 | 0.033 s | 3.81 MiB | C++ |
|
|
100 | 0.034 s | 3.71 MiB | C++ |
|
|
100 | 0.034 s | 3.74 MiB | C++ |
|
|
100 | 0.034 s | 3.89 MiB | C++ |
|
|
100 | 0.035 s | 3.83 MiB | C++ |
|
|
100 | 0.036 s | 3.71 MiB | C++ |
|
|
100 | 0.036 s | 3.73 MiB | C++ |
|
|
100 | 0.036 s | 3.73 MiB | C++ |
|
|
100 | 0.037 s | 3.73 MiB | C++ |
| 关于 最长括号匹配 的近10条评论(全部评论) |
|---|
我们对"合法的括号序列"进行以下定义:
$1$.空序列是一个合法的括号序列;
$2$.如果 $s$ 是合法的括号序列,则 $(s)$ 和 $[s]$ 是合法的括号序列;
$3$.如果 $a$ 和 $b$ 是合法的括号序列,则 $ab$ 是合法的括号序列;
4.没有其他序列是合法的括号序列。
例如,以下所有字符序列都是合法的括号序列:
$(), [], (()), ()[], ()[()]$
而以下字符序列则不是:
$(, ], )(, ([)], ([(]$
给定一个字符组成的括号序列 $s=a_1a_2a_3...a_n$,您的目标是找到最长的合法括号序列的长度,该括号序列是s的子序列。也就是说,您希望找到最大的 $m$,对于下标 $i_1,i_2,...,i_m$,其中 $1 \leq i_1 \lt i_2 \lt ... \lt i_m \leq n$,序列 $a_{i_1}a_{i_2}...a_{i_m}$ 是一个合法括号序列。
例如:给定初始序列 $s=([([]])]$,其最长的合法括号子序列为 $[([])]$,长度为 $6$。
输入文件包含多个测试数据(不超过 $10$ 个)。每个测试数据由一行组成,仅包含字符 '(',')','[' 和 ']' ,每个字符串的长度在 $1$ 到 $100$ 之间。文件结尾用 "end" 表示结束。
对于输入文件中的每个测试数据,在一行输出最长的合法括号子序列的长度。
((())) ()()() ([]]) )[)( ([][][) end
6 6 4 0 6