#hASHybttg020108. 1462:Antisymmetry

1462:Antisymmetry

好的,这是整理好的题面,格式清晰。


题目描述

对于一个 01 字符串,如果将这个字符串的 0 和 1 取反(0 变 1,1 变 0)后,再将整个串反过来,结果和原串一样,就称作“反对称”字符串。

例如:

  • "00001111" 取反得 "11110000",反过来得 "00001111",与原串一样,是反对称的。
  • "010101" 取反得 "101010",反过来得 "010101",与原串一样,是反对称的。
  • "1001" 取反得 "0110",反过来得 "0110",与原串 "1001" 不同,所以不是反对称的。

现在给出一个长度为 ( N ) 的 01 字符串,求它有多少个子串是反对称的(子串是原串中连续的一段)。


输入格式

第一行一个正整数 ( N )(( N \le 500,000 ))。
第二行一个长度为 ( N ) 的 01 字符串。

输出格式

一个正整数,表示反对称子串的个数。


数据范围

  • ( N \le 500,000 )

输入样例

8
11001011

输出样例

7

样例解释

字符串 11001011,反对称子串有:

  1. 01(位置 3–4)
  2. 01(位置 6–7)
  3. 10(位置 2–3)
  4. 10(位置 7–8)
  5. 0101(位置 3–6)
  6. 1100(位置 1–4)
  7. 001011(位置 3–8)

总共 7 个。