原题传送门
思路:
如"aba","abba"这样的回文字符串,
每个字符的出现次数有以下两种情况:
1:全部是偶数(abba)
2:只有一个为奇数(aba)
于是只要字符出现个数为奇数的个数小于等于k+1即可
否则无解
AC code:
#include<bits/stdc++.h>
using namespace std;
int t,n,k,number[50];
string s;
int main() {
cin>>t;
while(t--) {
cin>>n>>k>>s;
int y=0;
for(int i=0; i<n; i++) number[s[i]-'a'+1]++;//字符出现数量
for(int i=1; i<=26; i++){
if(number[i]%2==1) ++y;//若为奇数
number[i]=0; //
}
if(y-1<=k) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
虽然思路和第一篇差不多,但是感觉比第一篇好理解