自己理解的算法

来源:互联网 发布:dnf台服辅助源码 编辑:程序博客网 时间:2024/04/29 07:53
  1. 与子串相关的算法(模式匹配算法)
    父串为S,子串为T

    • BF算法
      子串首元素与父串比较, 如果相同用子串下一个元素进行比较;
      如果不同则子串整体右移。
int  BF(String S,String T){    int i=0,j=0;//i为父串引索,j为子串引索。    while(i<=S.length()&&j<=T.length()){        if(S[i]==T[i]){i++;j++;}        else {                i=i-j+2;                j=1;        }    }    if(j>T.length()) return i-T.length();    else return 0;}
  • MP算法
    事先对子串T进行判断,在与父串不匹配时进行滑动。

    事先计算字符串T的失效函数。例T = caatcat(0~6)
    f(j)全部置为-1;
    f(4):T(4)=T(0)=c,f(4)=0;
    f(5):T(4)=T(0),T(5)=T(1)=a,f(5)=1;

    在匹配过程中,失配情况发生假设在第j位
    j=0,目标指针(指向父串)前进一位,模式匹配回滚到首位,
    j!=0,目标指针不变,起始地址为P(f(j-1)+1).

0 0
原创粉丝点击