串其实也是线性结构,只是串的内容必须是字符,所以他又有他的不同的应用,最常见的应该是串的模式匹配,

下面就来说说模式匹配中的BF算法,其实就是一个一个向后面匹配,如果没有成功,那么回到主串刚开始的字符后面一个字符开始新的一次匹配,之后重复这个操作,如果匹配成功,那么返回第一个字符的位置,如果不成功,那么返回0,

1.串的定义

#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100
typedef struct 
{
    char ch[MaxSize + 1];
    int length;
}String;

2.BF算法

int indexBF(String S,String T,int pos) 
{
    int i = pos;
    int j = 1;
    while (i<=S.length&&j<=T.length)
    {
        if (S.ch[i]==T.ch[j]) 
        {
            i++;
            j++;
        }
        else
        {
            i = i - j + 2;
            j = 1;
        }
    }
    if (j>T.length)
    {
        return i - T.length;
    }
    else
    {
        return 0;
    }
}

 

好了,我们下回见,peace

版权声明:本文为gitpy123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/gitpy123/p/13437066.html