BF算法比较简单粗暴,属于蛮力法 原理也比较简单,将主串与模式从第一个字符依次开始匹配,知道完全匹配上或者主串结束,因此最坏情况下时间复杂度为O(m*n)
C++描述:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include<iostream>
using namespace std;
int BF(char S[], char T[]) { int index = 0, i = 0, j = 0; while(S[i] != '\0' && T[j] != '\0') { if(S[i] == T[j]) { i ++; j ++; } else { index ++; i = index; j = 0; } }
if(T[j] == '\0') { return index + 1; } else { return 0; } }
int main () { char S[] = "sdasaaas"; char T[] = "aaas"; cout << BF(S, T) << endl; return 0; }
|