等价消除

提交数: 1, 通过率: 100%, 平均分: 100

题目描述:

⼩ A 有⼀个仅包含⼩写英⽂字母的字符串 \( s \)。
对于⼀个字符串,如果能通过每次删去其中两个相同字符的⽅式,将这个字符串变为空串,那么称这个字符串是可
以被等价消除的。
⼩ A 想知道 \( s \) 有多少⼦串是可以被等价消除的。
⼀个字符串 \( s' \)是 \( s \)的⼦串,当且仅当删去 \( s \)的某个可以为空的前缀和某个可以为空的后缀之后,可以得到 \( s' \)。

输入格式:

第⼀⾏,⼀个正整数 ,表⽰字符串|\( s \)|的长度。
第⼆⾏,⼀个仅包含⼩写英⽂字母的字符串  \( s \)。

输出格式:

⼀⾏,⼀个整数,表⽰答案。

数据范围:

对于 20% 的测试点,保证  \( s \)中仅包含 a 和 b 两种字符。
对于另外20% 的测试点,保证 \( 1 \le |s| \le 2000 \) 。
对于所有测试点,保证 \( 1 \le |s| \le 2 \times 10^5 \)。

样例输入:

样例1:
7
aaaaabb

样例2:
9
babacabab

样例输出:

样例1:
9

样例2:
2
时间限制: 1000ms
空间限制: 256MB