题目
有一串长度为 n 的小写字母组成的字符串,可以从中挑选 'k' 'i' 'n' 'g' 四个字符组成一支礼炮,或者从中挑选 'k' 'i' 'n' 'g' 'i' 'n' 'g' 七个字符组成两支礼炮。请问最多能挑选多少礼炮?
解题思路
先遍历一遍字符串,统计出 k、i、n、g 这 4 个字符的个数。
记字符 k 的个数为 ,后面 3 个字符的个数的最小值为
。
- 如果
,可以每 4 个字符组成一支礼炮,
。
- 如果
,可以每 7 个字符组成两支礼炮,
。
- 如果
,既有4字符礼炮,又有7字符礼炮,
。
C++代码
#include<iostream>
using namespace std;
int main(){
int n;
cin >> n;
string s;
cin >> s;
int cnt[26] = {0};
for(int i=0; i<n; ++i){
int index = s[i]-'a';
++cnt[index];
}
int ik = 'k'-'a';
int ii = 'i'-'a';
int in = 'n'-'a';
int ig = 'g'-'a';
int nk = cnt[ik];
int ans = nk;
int tmp = min(cnt[ii], min(cnt[in], cnt[ig]));
if(tmp>=2*nk) ans = nk*2;
else ans = tmp;
cout << ans << endl;
return 0;
}
京公网安备 11010502036488号