在一个字符串中寻找bug字符

输入一个字符串,例如abcudg,你可以在其中找到一个bug,它分别由字符串的第2、4、6个字符组成;再比如gducba,虽然他包含了bug三个字符,但顺序不对,所以没有bug。每个字母只能用一次,也就是说在字符串里bbuugg你可以找到两个bug。最后输出bug的个数。

找到的字符从字符串移出,不断循环搜索这三个字符

运行结果:

img

代码如下:

#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;
}