输入一个字符串,例如abcudg,你可以在其中找到一个bug,它分别由字符串的第2、4、6个字符组成;再比如gducba,虽然他包含了bug三个字符,但顺序不对,所以没有bug。每个字母只能用一次,也就是说在字符串里bbuugg你可以找到两个bug。最后输出bug的个数。
找到的字符从字符串移出,不断循环搜索这三个字符
运行结果:
代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
char buf[1000];
char nmb[1000]={0};
int i=0,cnt=0;
int state=0;
gets(buf); //
while(1)
{
//find b
for(i=0;buf[i]!='\0';i++)
{
if(buf[i]=='b' && nmb[i] != '1')
{
nmb[i]='1';
break;
}
}
if(buf[i]=='\0') break;
//find u i使用上一次循环的值,保证u在b的后面
for(;buf[i]!='\0';i++)
{
if(buf[i]=='u' && nmb[i] != '1')
{
nmb[i]='1';
break;
}
}
if(buf[i]=='\0') break;
//find g ,i使用上一次循环的值,保证g在u的后面
for(;buf[i]!='\0';i++)
{
if(buf[i]=='g' && nmb[i] != '1')
{
nmb[i]='1';
break;
}
}
if(buf[i]=='\0') break;
cnt++;
}
printf("%d",cnt);
return 0;
}