#11170. D. Distinct Split不同的分割
D. Distinct Split不同的分割
题目:不同的分割
每个测试的时间限制: 2 秒 ⏳ 内存限制: 256 兆字节 💾
我们用 f(x) 函数表示字符串 x 中包含的不同字符的数量。例如,f(abc)=3,f(bbbbb)=1,f(babacaba)=3。
给定一个字符串 s,将其分割成两个非空字符串 a 和 b,使得 f(a)+f(b) 尽可能大。换句话说,找到使得 f(a)+f(b) 最大的可能值,使得 a+b=s(字符串 a 和字符串 b 的连接等于字符串 s)。
输入
输入由多个测试用例组成。第一行包含一个整数 t(1≤t≤104)——测试用例的数量。🌟
每个测试用例的第一行包含一个整数 n(2≤n≤2⋅105)——字符串 s 的长度。
第二行包含字符串 s,由小写英文字母组成。
保证所有测试用例的 n 之和不超过 2⋅105。
输出
对于每个测试用例,输出一个整数——使得 a+b=s 的 f(a)+f(b) 的最大可能值。
示例
输入
5
2
aa
7
abcabcd
5
aaaaa
10
paiumoment
4
aazz
输出
2
7
2
10
3
注意
对于第一个测试用例,只有一种有效的方法将 aa 分成两个非空字符串 a 和 a,f(a)+f(a)=1+1=2。
对于第二个测试用例,通过将 abcabcd 分成 abc 和 abcd,我们可以得到答案 f(abc)+f(abcd)=3+4=7,这是可能的最大值。
对于第三个测试用例,不管我们如何分割字符串,答案总是 2。 😊📚