CF1238D AB-string
题目描述
如果字符串 $t_1t_2\dots t_k$ 满足其每个字母都属于至少一个长度大于 $1$ 的回文子串,则称该字符串是“好”的。
回文串是指正着读和反着读都相同的字符串。例如,A、BAB、ABBA、BAABBBAAB 都是回文串,而 AB、ABBBAA、BBBA 不是回文串。
以下是一些“好”的字符串的例子:
- $t = $ AABBB(字母 $t_1$、$t_2$ 属于回文串 $t_1\dots t_2$,字母 $t_3$、$t_4$、$t_5$ 属于回文串 $t_3\dots t_5$);
- $t = $ ABAA(字母 $t_1$、$t_2$、$t_3$ 属于回文串 $t_1\dots t_3$,字母 $t_4$ 属于回文串 $t_3\dots t_4$);
- $t = $ AAAAA(所有字母都属于回文串 $t_1\dots t_5$);
现在给定一个长度为 $n$ 仅由字母 A 和 B 组成的字符串 $s$。
请你计算字符串 $s$ 的“好”子串的数量。
输入格式
第一行包含一个整数 $n$($1 \le n \le 3 \cdot 10^5$),表示字符串 $s$ 的长度。
第二行包含字符串 $s$,仅由字母 A 和 B 组成。
输出格式
输出一个整数,表示字符串 $s$ 的“好”子串的数量。
说明/提示
在第一个测试用例中,有六个“好”子串:$s_1\dots s_2$、$s_1\dots s_4$、$s_1\dots s_5$、$s_3\dots s_4$、$s_3\dots s_5$ 和 $s_4\dots s_5$。
在第二个测试用例中,有三个“好”子串:$s_1\dots s_2$、$s_1\dots s_3$ 和 $s_2\dots s_3$。
由 ChatGPT 4.1 翻译