题目
有一串长度为 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; }