4.3 串的模式匹配算法

来源:互联网 发布:免费vip软件下载 编辑:程序博客网 时间:2024/06/05 12:07

      4.3.1 求子串位置的定位函数Index(S,T,pos)

算法4.5:

采用定长顺序存储结构,可以写出不依赖于其它串操作的匹配算法。

int Index(SString S,SString T,int pos)     {           i = pos;           j = 1;           while(i <= S[0] && j <= T[0])            {                   if(S[i] = = T[j])                    {                          ++i;++j                     }                   else                    {                           i = i - j + 2; j = 1;                    }            }            if(j > T[0]) return i - T[0];     }

        在算法函数过程中,分别用计数指针i 和 j 指示主串S和模式串T当前正在比较字符的位置。

算法的基本思想:从主串的第pos个位置起,和模式串的第一个字符比较,若相等则继续比较后面的字符;若不等则主串往后移继续与模式串的第一个字符开始比较起。一次类推,直到主串S中出现一个连续的和模式串T相等的子串,则匹配成功。函数返回值为与模式串匹配成功的那个主串位置,这个位置是和模式串的第一个字符比较的主串的字符位置。