#2836. 小青的正则小游戏
小青的正则小游戏
题目背景
为了解决形形色色的字符串匹配问题,正则表达式是一个强有力的工具。正则表达式通过定义一套符号体系,能够表示出需要查找的字符串所具有的性质。如 a|aa 能匹配 a 或 aa,(a|b)c 能匹配 ac 或 bc。
题目描述
小青在学习字母组合小游戏时,遇到了一种特殊的 “字母表达式”,这种表达式由字母 a、分隔符 |、重复符 * 和括号 () 组成。为了让表达式更简洁,小青需要按照规则把复杂的表达式简化成最简形式,快来帮他完成这个任务吧!
完整的正则表达式过于复杂,在这里我们只考虑由 (、)、| 和 a 组成的正则表达式。运算遵循下列法则:
-
有括号时,我们总是先算括号内的部分;
-
当两个字符串(或由括号定义的子串)间没有符号时,我们总把它们连起来作为一个整体;
-
|是或连接符,表示两边的字符串任取其一,若同一层里有多个或连接符,可以看作在这些或连接符所分开的若干字符串里任取其一。
例如,(aaa)aa|aa|(a(aa)a)、(aaaaa)|(aa)|aaaa 和 aaaaa|aaaa|aa 是等价的,它们都能匹配长度为 或 的全 a 字符串。
下面给定一个简化正则表达式,试编程计算它最多能匹配多长的全 a 字符串。
输入格式
输入一行一个合法的简化正则表达式。
输出格式
一行一个整数,表示能匹配的最长全 a 字符串长度。
输入输出样例 #1
#输入 #1
(aaa)aa|aa|(a(aa)a)
#输出 #1
5
输入输出样例 #2
#输入 #2
((a|aaa)|aa)|a
#输出 #2
3
输入输出样例 #3
#输入 #3
(a(aa|aaa)a|(a|aa))aa
#输出 #3
7
说明/提示
【数据范围】
对于 数据,表达式长度不超过 ,且不存在括号。
对于 数据,表达式长度不超过 。
对于 数据,表达式长度不超过 。
对于 的数据,表达式长度不超过 。
保证表达式合法(即 | 两端和括号内运算结果均非空字符串)。
相关
在下列比赛中: