Problem2601--Typo[USACO-2012-Nov-B]

2601: Typo[USACO-2012-Nov-B]

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 0  Solved: 0
[Status] [Submit] [Creator:]

Description

Bessie刚买了一台新的笔记本电脑,很遗憾的是,他的蹄子太大而键盘太小,简直无法打字。
Bessie刚刚用他喜欢的方式输入了一串对称的括号,但是她意识到她可能输错了一个字符,可能是把"("错误的输成了")",或者是把")"错误的输成了"("。
有很多方法可以判断一个字符串是否是对称的括号,最简单的方式应该是,左括号"("和右括号")"的数量一样,而且在字符串的任何前段部分中,"("的数量至少要等于")"的数量。
例如,下面这几个字符串就是对称的括号:
()
(())
()(()())
而下面这些就不是对称的括号:
)(
())(
((())))
请帮助Bessie计算一下,在整个字符串中一共有多少个位置,在这个位置进行一次括号转换(即在某一个位置把"("替换为")",或者把")"替换为"("),可以把整个字符串变成对称括号。

Input

输入为一个长度为N的括号字符串,1 <= N <= 100,000

Output

一行,输出一个整数。意思是:在给定字符串中,如果在某一个位置把"("替换为")",或者把")"替换为"(",从而可以使得字符串变为对称括号,输出像这样的位置的数量

Sample Input Copy

()(())))

Sample Output Copy

4

HINT

样例说明:
如果我们把输入样例,这样来标记一下
12345678
()(())))
在位置2处,把进行一次括号转换,那么这个字符串就变成了对称括号,同理在位置5、6、7处进行转换,也能使字符串变成对称括号。所以输出答案是4.

Source/Category