CF1605C Dominant Character
题目描述
Ashish 有一个长度为 $n$ 的字符串 $s$,该字符串只包含字符 'a'、'b' 和 'c'。
他想找到满足以下条件的最短子串的长度:
- 子串的长度至少为 $2$;
- 在该子串中,'a' 的出现次数严格大于 'b' 的出现次数;
- 在该子串中,'a' 的出现次数严格大于 'c' 的出现次数。
Ashish 正忙于策划下一场 Codeforces 比赛。请你帮助他解决这个问题。
如果字符串 $a$ 是字符串 $b$ 的子串,则 $a$ 可以通过删除 $b$ 的开头和结尾的若干(可能为零或全部)字符得到。
输入格式
第一行包含一个整数 $t$ $(1 \le t \le 10^{5})$,表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 $n$ $(2 \le n \le 10^{6})$,表示字符串 $s$ 的长度。
每个测试用例的第二行包含一个仅由字符 'a'、'b' 和 'c' 组成的字符串 $s$。
保证所有测试用例中 $n$ 的总和不超过 $10^{6}$。
输出格式
对于每个测试用例,输出满足条件的最短子串的长度。如果不存在这样的子串,则输出 $-1$。
说明/提示
考虑第一个测试用例。在子串 "aa" 中,'a' 出现了两次,'b' 和 'c' 都未出现。由于 'a' 的出现次数严格大于 'b' 和 'c',因此子串 "aa" 满足条件,答案为 $2$。子串 "a" 也满足该条件,但其长度不足 $2$。
在第二个测试用例中,可以证明 "cbabb" 的所有子串中,'a' 的出现次数都没有严格大于 'b' 和 'c'。
在第三个测试用例 "cacabccc" 中,满足条件的最短子串长度为 $3$。
由 ChatGPT 4.1 翻译