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 翻译