问题2123--括号匹配

2123: 括号匹配

时间限制: 1 Sec  内存限制: 128 MB
提交: 2  解决: 1
[提交] [状态] [讨论版] [命题人:]

题目描述

“正则括号”序列的定义如下。
• 空序列是一个正则括号序列。
• 若s 是正则括号序列,则(s )和[s ]也是正则括号序列。
• 若a 和b 是正则括号序列,则ab 也是正则括号序列。
• 没有其他序列是正则括号序列。
例如,( )、[]、( ( ) )、( ) []、( ) [( ) ]都是正则括号序列,而(、]、) (、( [) ]、( [( ]不是正则括号序列。
给定括号序列a 1 a 2 …an ,求解其最长的正则括号子序列的长度。也就是说,希望找到最大的m ,使ai 1 ai 2 …aim 是一个正则括号序列,其中1≤i 1 <i 2 <…<im ≤n 。例如给定初始序列( [( [] ]) ],最长的正则括号子序列是[( [] ) ],其长度是6。

输入

 输入包含多个测试用例。每个测试用例都只包含一行由(、)、[、]组成的字符串,其长度为1~100(包括1和100)。输入的结尾由包含“end”的行标记,不应对其进行处理。

输出

对每个测试用例,都单行输出最长的正则括号子序列的长度。

样例输入 Copy

((()))
()()()
([]]}
)[)(
([][][)
end

样例输出 Copy

6
6
4
0
6

来源/分类