您的位置:首页 > 编程语言 > C语言/C++

使用C语言实现串的匹配朴素算法(BF算法)

2017-04-02 21:33 369 查看
使用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;
}


需要注意的是,这里的代码没有检测输入的字符串的大小,过于大的字符串会导致程序崩溃
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: