1279: Good morning [字符串]
时间限制: 1 Sec 内存限制: 128 MB提交: 182 解决: 72 统计
题目描述
给定一个只有小写字母构成的非空字符串,可以从字符串中任选字符并任意规定顺序,每个字符只能用一次。
最多可以构成多少个"goodmorning"子串(可以重叠)。
比如说:字符串aaavbbbddgggooooooddmmrrnnnnii,可以构成goodmorningoodmorning,共2个。
输入
有多组测试数据,请处理到文件结束。
每组数据给定一个只有小写字母构成的非空字符串str。后台所有数据保证1 <= |str| <= 10^5。
输出
每组数据输出一个整数,表示最多可以构成的"goodmorning"子串。
样例输入
aaavbbbddgggooooooddmmrrnnnnii
goodmorninn
goodmorning
样例输出
2
0
1
来源
快要比赛了,还很多不会,练练
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int b[50];
char a[100005];
int main()
{
while(~scanf("%s",a))
{
int len=strlen(a);
memset(b,0,sizeof(b));
for(int j=0;j<len;j++)
{
if(a[j]=='g')
b[0]++;
if(a[j]=='o')
b[1]++;
if(a[j]=='d')
b[2]++;
if(a[j]=='m')
b[3]++;
if(a[j]=='r')
b[4]++;
if(a[j]=='n')
b[5]++;
if(a[j]=='i')
b[6]++;
}
b[0]=b[0]-1;
b[1]=b[1]/3;
b[5]=b[5]/2;
sort(b,b+7);
printf("%d\n",b[0]);
}
return 0;
}