#P12860. 括号匹配
括号匹配
括号匹配
Problem Description
本题中字符串下标从 开始。
对于字符串 ,我们称 的非空子串为其中连续一段字符构成的字符串。第 个字符到第 个字符()构成的子串记作 。
称非空字符串 是回文串,当且仅当把所有字符的顺序翻转过来后 保持不变。例如 ()()
不是回文串,而 ())(
是回文串。
称非空字符串 是括号串,当且仅当 中只有 (
和 )
且两种字符一样多,并且对于任意的 , 中 (
的数量 不少于 )
。例如 ()
是括号串,而 ())(()
不是括号串。
给出一个字符串 ,求 有多少个子串 同时满足:
- 是回文串。
- 中存在一个子串是括号串。 两个子串的下标范围不同,我们就认为两个子串不同。
Input
输入一行一个字符串 (, 中仅含小写字母和小括号),含义同题目描述。
Output
输出一行一个自然数,表示答案。
Sample Input
()(a)a()(
Sample Output
4
Hint
()(
是回文子串,其中 ()
是括号串。由于这个子串出现了两次,所以算两个子串。另外两个串分别是 )(a)a()
和 ()(a)a()(
。
注意 (a)a(
也是回文子串,但是其中不包含子串是括号串,所以不计入答案。
Source
2025“钉耙编程”中国大学生算法设计暑期联赛(9)