刚开始做这道题的时候,有思路,就是建造一个int 类型的数组,标记nineteen中的4个字母,但是忽略了一个问题,就是nineteen始字母和末字母都是n,所以末尾的n也可以作为始字母n,这样就是1个nineteen有3个n,2个有5个,3个有7个,所以(b[0]-1)/2就是最大的nineteen。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
int b[5];
int main()
{
string a;
while(cin>>a)
{
memset(b,0,sizeof(b));
int l=a.size();
for(int i=0; i<l; i++)
{
if(a[i]=='n')
b[0]++;
if(a[i]=='i')
b[1]++;
if(a[i]=='e')
b[2]++;
if(a[i]=='t')
b[3]++;
}
b[0]=(b[0]-1)/2;//根据n的数量算出最多包含"nineteen"的数量
b[2]/=3;
sort(b,b+4);
cout<<b[0]<<endl;
}
return 0;
}