《数据结构和算法》之字符串BF算法

一,定义:

        串是由零个或者多个字符组成的有限序列,又名字符串。一般记为 s=“a1a2a3a4......an”(n>0),串可以是空串,即没有字符,直接由 “”表示,或者可以由希腊字母来表示。

        子串和主串,例如“china”是“chinaboy”的子串,反之则倒过来。字符串比较大小要怎么比较呢,这个时候比的就是字符串里每个字符的ASCII码的大小,因为‘F’==70,‘f’==102,'f'>'F'。

二,字符串的存储结构

      字符串的存储结果与线性表一样,分为顺序存储和链式存储。字符串的顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列的。按照预定义的大小,为每个定义的字符串变量分配一个固定长度的存储区,一般用定长数组来定义。与线性表类似,既然是固定长度的存储区,就存在一个空间分配不灵活的问题,那么会考虑用链式存储结构。不同的字符串我们一般都是连在一起表述的,所以习惯上我们通常还是会直接定义一个足够长的存储区来存储的。

三,BF算法

       Brute Force算法,属于朴素的模式匹配算法。核心算法是:有两个字符串S和T,长度为N和M,首先S[1]和T[1]比较,若相等,则再比较S[2]和T[2],一直到T[M]为止,若S[1]和T[1]不等,则T向右移动一个字符的位置,再依次进行比较。该算法最坏情况下要进行M*(N-M+1)次比较,时间复杂度为O(M*N)。在这里S是主串,T是子串,这种子串的定位操作通常称为串的模式匹配。假设我们要从主串S="IloveFishC.com"找到T="FishC"这个子串的位置,安装BF算法,我们需要进行下边的步骤:

                            《数据结构和算法》之字符串BF算法_第1张图片

                           《数据结构和算法》之字符串BF算法_第2张图片

                            《数据结构和算法》之字符串BF算法_第3张图片

                            《数据结构和算法》之字符串BF算法_第4张图片

                            《数据结构和算法》之字符串BF算法_第5张图片

                            《数据结构和算法》之字符串BF算法_第6张图片 

                   在经过上面的6个步骤就可以知道BF算法的原理。

             

你可能感兴趣的:(数据结构和算法)