1. 程式人生 > 其它 >資料結構學習—串的模式匹配演算法BF

資料結構學習—串的模式匹配演算法BF

BF演算法

BF演算法是最簡單直觀的模式匹配演算法
思路:窮舉法的思路

當主串i和子串j不匹配時,主串i返回到開始位置的下一位置即i-j+2處,子串j回溯到起始處。
演算法描述:

 int index_BF(SString S,SString T,int pos)   ///S是主串 T是模式串
                   { //返回模式T在主串S中第POS個字元開始第一次出現的位置,若不存在則返回值為0 
                        //其中,T非空,1<=pos<=S.lengh
                        i=pos; 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;  //匹配失敗 }

最好情況下時間複雜度:O(n+m)
最壞情況下的時間複雜度O(n*m)