AT_bitflyer2018_final_c 部分文字列と括弧

题目描述

给定一个只由 `(` 和 `)` 组成的字符串 $S$。请计算有多少组整数 $(i, j)$($1 \leq i \leq j \leq |S|$)满足下述条件。 条件:取出 $S$ 的第 $i$ 个字符到第 $j$ 个字符(包括两端),所得的子串是**括号匹配的字符串**。 **括号匹配的字符串**定义如下,满足以下任一条件的字符串为括号匹配的字符串: - 空字符串; - 存在括号匹配的字符串 $A$、$B$,将 $A$ 和 $B$ 按顺序连接得到的字符串; - 存在括号匹配的字符串 $A$,将 `(`、$A$、`)` 按顺序连接得到的字符串。

输入格式

输入为一行,包含一个字符串 $S$。

输出格式

输出满足条件的整数对 $(i, j)$($1 \leq i \leq j \leq |S|$)的个数。

说明/提示

## 限制 - $1 \leq |S| \leq 10^5$ - $S$ 仅由 `(` 和 `)` 组成 ## 样例解释 1 - 取 $S$ 的第 $2$ 个字符到第 $5$ 个字符,得到 `(())`,这是括号匹配的字符串。 - 取 $S$ 的第 $3$ 个字符到第 $4$ 个字符,得到 `()`,这也是括号匹配的字符串。 因此,$(2, 5)$ 和 $(3, 4)$ 满足条件。 由 ChatGPT 4.1 翻译