题目
输入
aabbccd
输出
1
说明
打乱顺序可以成为abcdcba,最少可以分为1组回文串
思想
这道题我们可以思考将同类的字母进行分组,由于可以随意排序,因此如果某字母是偶数,则可以直接放入老的回文串,否则就要制作新的回文串。
AC代码
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define pre(i,a,b) for(int i=a;i>=b;--i)
#define m(x) memset(x,0,sizeof x)
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define PI acos(-1)
#define pb push_back
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int mod = 1e9+7;
const int maxn = 1e5+10;
const int N = 1e4+10;
int main()
{
string str;
cin >> str;
int num[30];
memset(num, 0, sizeof num);
int len = (int)str.length();
rep(i, 0, len-1)
{
int x = str[i]-'a'+1;
//cout << x << endl;
num[x]++;
}
//cout << num[1] << " " << num[2] << endl;
int cnt = 0;
rep(i, 1, 26)
{
if(num[i]!=0)
{
//cout << num[i] << endl;
if(num[i]%2==1)cnt++;
}
}
if(cnt>0)cout << cnt << endl;
else cout << "1" << endl;
return 0;
}