解题思路
先固定一个失灵字母 c,考虑有多少个原始字符串删除所有 c 后可以得到 s。
如果 s 中已经出现了字母 c,那么这种情况不可能。因为键盘中字母 c 失灵,原始字符串中所有的 c 都不会被输入,所以最终得到的 s 中不可能含有 c。
因此,只有没有出现在 s 中的字母才可能是失灵字母。
接下来考虑固定一个没有出现在 s 中的字母 c。
P4953.第2题-坏掉的键盘
题目内容
小明准备输入一个仅由小写英文字母组成的字符串,但他的键盘在一开始就有且仅有一个按键失灵,导致该字母在原串中的所有出现都没有被输入,最终得到的字符串为 s。小明还告诉你:原本要输入的完整字符串中任意相邻两个字符都不相同。
请你计算,对于每一个可能的小写字母 c('a' 到 'z'),有多少个满足条件的原始字符串(删除所有 c 后得到 s,且自身相邻字符不同)。请输出将这些情况下得到的数量相加后的总和。由于答案可能很大,结果对 109+7 取模。
输入描述
每个测试文件包含多组测试数据。第一行输入一个整数 T (1≤T≤105) 表示数据组数。接下来每组数据描述如下:
- 第一行输入一个整数 n (1≤n≤2×105) 表示字符串的长度。
- 第二行输入一个仅由小写字母组成的字符串 s。
保证所有测试数据中字符串长度总和不超过 5×105。
输出描述
对于每组测试数据,输出一个整数,表示“可能的原始字符串”的数量对 109+7 取模后的结果。
样例1
输入
3
4
abac
4
aaaa
3
xyz
输出
736
100
368