4.2模式匹配-BF算法

来源:互联网 发布:淘宝的商品类目 编辑:程序博客网 时间:2024/05/16 11:48

4.2模式匹配-BF算法

BF(Brute-Force)算法,即暴力匹配。二重循环,很好理解。特点是需要 i指针的回溯。

(1)BF算法

int Index_BF(char *s,char *p){int i , j;int sLen = strlen(s); int pLen = strlen(p);i = j = 0;while(i < sLen && j < pLen){if(s[i] == p[j]){i ++;j ++;}else{i = i-j+1; j = 0;}}if(j == pLen)return i - pLen +1;elsereturn -1;}

(2)模式匹配

# include <stdio.h># include <string.h>void Init_string(char *s,char *p);int Index_BF(char *s,char *p);void print(int i);int main(){int i;char s[50];char p[50];Init_string(s,p);i = Index_BF(s,p);print(i);return 0;}void Init_string(char *s,char *p){printf("input string s , p:\n");gets(s);gets(p);}int Index_BF(char *s,char *p){int i , j;int sLen = strlen(s); int pLen = strlen(p);i = j = 0;while(i < sLen && j < pLen){if(s[i] == p[j]){i ++;j ++;}else{i = i-j+1; j = 0;}}if(j == pLen)return i - pLen +1;elsereturn -1;}void print(int i){if(i == -1)printf("String p not be found !\n");elseprintf("The pos is: %d\n",i);}

(3)性能分析

时间复杂度:O(m * n);

空间复杂度:O( 1 )

总而言之,太慢!


0 0
原创粉丝点击