#AG0505006. 规则的括号序列
规则的括号序列
题目描述
我们定义一个字符串序列为“规则的括号序列”当且仅当它满足如下条件:
- 空字符串是规则的括号序列;
- 如果字符串
s是一个规则的括号序列,那么(s)和[s]也是规则的括号序列; - 如果字符串
a和b都是规则的括号序列,那么ab也是规则的括号序列; - 除此之外的字符串都不能称为规则的括号序列。
举个例子,下面的这些字符串都是规则的括号序列:
(), [], (()), ()[], ()[()]
与此同时,下面的这些字符串都不是规则的括号序列:
(, ], )(, ([)], ([(]
给你一个字符串 ,你的任务是找到它的最长的一个满足“规则的括号序列”条件的子序列,并输出该最长规则括号子序列的长度。也就是说,你需要找到最长的一组下标 ,他们满足 ,同时 是规则的括号序列。
比如,给你一个字符串 ([([]])] ,它的最长规则的括号子序列是 [([])] 。
输入格式
输入包含多组样例。每组样例占据一行,包含一个字符串,该字符串仅由 (,),[,]组成。字符串的长度在 到 之间。
输入数据的最后一行包含一个字符串“end”用于标识文件结束。
输出格式
对于每一组数据(除了最后的“end”),你需要输出它的最长规则的括号子序列的长度。
((()))
()()()
([]])
)[)(
([][][)
end
6
6
4
0
6