資料結構學習—串的模式匹配演算法BF
阿新 • • 發佈:2021-09-20
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)