#B1014. 【ZCX-002-DIV2】B.回文串

【ZCX-002-DIV2】B.回文串

题目描述

给定一个长度为 nn 的字符串 ss,由小写英文字母组成,以及一个整数 kk

你需要判断:是否可以 恰好删除 kk 个字符,使得剩下的字符经过任意重排后,可以构成一个回文串。

注意: 删除后剩余的字符可以任意重新排列。


回文串定义

回文串是指正读和反读都相同的字符串。

例如:

  • 是回文串:"z""aaa""aba""abccba"
  • 不是回文串:"codeforces""reality""ab"

输入格式

第一行一个整数 tt1t1041 \le t \le 10^4),表示测试用例数量。

接下来每个测试用例包含:

  • 第一行两个整数 n,kn, k0k<n1050 \le k < n \le 10^5),表示字符串长度和需要删除的字符数。
  • 第二行一个长度为 nn 的字符串 ss,仅由小写字母组成。

保证所有测试用例的 nn 之和不超过 2×1052 \times 10^5


输出格式

对于每个测试用例:

  • 如果可以通过删除恰好 kk 个字符,使剩余字符可以重排成回文串,输出 "YES"
  • 否则输出 "NO"

输入输出样例

14
1 0
a
2 0
ab
2 1
ba
3 1
abb
3 2
abc
6 2
bacacd
6 2
fagbza
6 2
zwaafa
7 2
taagaak
14 3
ttrraakkttoorr
5 3
debdb
5 4
ecadc
5 3
debca
5 3
abaac
YES
NO
YES
YES
YES
YES
NO
NO
YES
YES
YES
YES
NO
YES

说明

  • 第一个测试用例:无需删除,字符串 "a" 本身就是回文串。
  • 第二个测试用例:无法删除字符,"ab""ba" 都不是回文串。
  • 第三个测试用例:删除任意一个字符,剩余字符串一定是回文串。
  • 第四个测试用例:删除一个 'a',得到 "bb",是回文串。
  • 第六个测试用例:删除 'b''d',得到 "acac",可重排为 "acca"
  • 第九个测试用例:删除 't''k',得到 "aagaa",是回文串。