给出一个仅由 ( 和 ) 构成的括号字符串。
定义合法的括号串为:正确匹配的括号串,即:所有的左右小括号都正确的嵌套,且每个左括号都能唯一的匹配到对应的右括号,每个右括号都有唯一的左括号与其匹配。
比如:(())()、()((())) 都是合法的括号串。而 )(、(()、)(()、()( 都不是合法的括号串。
请编程求出,给定的括号串中,有多少个合法括号子串。
括号子串的定义是:从括号串中取出任意连续字符,形成的合法括号子串。需要注意的是,在括号串的不同位置取出内容相同的合法括号子串,认为是不同的合法括号子串。
输入一个字符串,表示给定的括号串。
输出合法的括号子串的数量。
(())()
4
((())(
2
(()())()
6
样例 1 可以取出 4 种合法的括号子串,分别是如下 4 个括号串中加粗的部分。
(())()
(())()
(())()
(())()
对于 50\% 的数据,括号串的长度 L 满足 1 \le L \le 50。
对于 100\% 的数据,括号串的长度 L 满足 1 \le L \le 10^6。
东方博宜OJ