使用C语言实现BF这种低效率的算法,代码还是比较简单的。
不过效率比较低下。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 100
#define MINSIZE 30
int main()
{
char parentString[MAXSIZE];
char sonString[MINSIZE];
printf("please input a parent string:\n");
scanf("%s", parentString);
fflush(stdin);
printf("please input a son string:\n");
scanf("%s", sonString);
int pos, i, j, flag;
i = j = flag = 0;
while(i < strlen(parentString))
{
pos = i;
if(sonString[j] == parentString[i])
{
i++;
j++;
while(j < strlen(sonString))
{
if(sonString[j] != parentString[i])
break;
i++;
j++;
}
if(j == strlen(sonString))
flag = 1;
}
if(flag == 1)
{
printf("the position is %d\n", pos+1);
break;
}
//开始下一轮的循环,对有一些变量进行初始化
i = ++pos;
j = 0;
if(i > strlen(parentString) - strlen(sonString))
{
printf("no this son string\n");
break;
}
}
getchar();
return 0;
}
需要注意的是,这里的代码没有检测输入的字符串的大小,过于大的字符串会导致程序崩溃