CF1354B Ternary String
题目描述
给定一个字符串 $s$,其中每个字符都是 $1$、$2$ 或 $3$。你需要选择 $s$ 的最短连续子串,使得该子串至少包含这三种字符各一次。
字符串 $s$ 的连续子串是指可以通过从 $s$ 的开头删除若干(可能为零)字符和从结尾删除若干(可能为零)字符得到的字符串。
输入格式
第一行包含一个整数 $t$($1 \le t \le 20000$),表示测试用例的数量。
每个测试用例包含一行字符串 $s$($1 \le |s| \le 200000$)。保证 $s$ 的每个字符都是 $1$、$2$ 或 $3$。
所有测试用例中字符串的总长度不超过 $200000$。
输出格式
对于每个测试用例,输出一个整数,表示包含所有三种字符至少一次的最短连续子串的长度。如果不存在这样的子串,则输出 $0$。
说明/提示
考虑如下示例测试:
在第一个测试用例中,可以使用子串 123。
在第二个测试用例中,可以使用子串 213。
在第三个测试用例中,可以使用子串 1223。
在第四个测试用例中,可以使用子串 3221。
在第五个测试用例中,$s$ 中没有字符 3。
在第六个测试用例中,$s$ 中没有字符 1。
在第七个测试用例中,可以使用子串 3112。
由 ChatGPT 4.1 翻译