應用蠻力法解決串匹配問題的過程是:從主串s的第乙個字元開始和子串t的第乙個字元進行比較,若相等,則主串和子串都往後移乙個字元進行比較;若不相等,則從主串的第二個字元開始和子串的第乙個字元重新開始比較,重複上訴過程,若子串t中的字元全部比較完畢,則說明本趟匹配成功;否則不成功。這個演算法稱為樸素的模式匹配演算法,簡稱bf演算法。
設主串s="abcabcacb",子串t="abcac",bf演算法的匹配過程如圖所示。
偽**描述如下:
輸入:主串s,子串t
輸出:t在s中的位置
1.初始化主串比較的開始位置index=0;
2.在串s和串t中設定比較的起始座標i=0,j=0;
3.重複下述操作,直到s或t的所有字元均比較完畢:
3.1 如果s[i]=t[j],則繼續比較s和t的下一對字元
3.2 否則,下一趟匹配的開始位置index++,主串回溯下標i=index,子串回溯下標j=0;
4.如果t中所有字元均比較完了,則返回匹配的開始位置index;否則返回0;
c語言**如下所示:
#include int bf(char s,char t)
else
}if(t[j]=='\0') return index+1;
else return 0;
}int main()
c++**如下:
#include #include using namespace std;
int bf(string s,string t)
else
}if(t[j]=='\0') return index+1;
else return 0;
}int main()
{ string a;
cin>>a;
string b;
cin>>b;
cout<
串 BF演算法(匹配子串)
include include using namespace std define maxlen 255 bf演算法,匹配子串 typedef struct sstring string strassign sstring s,string e return ok int index bf sst...
BF演算法 串的模式匹配
bf演算法,即暴風 brute force 演算法,是普通的模式匹配演算法,bf演算法的思想就是將目標串s的第乙個字元與模式串t的第乙個字元進行匹配,若相等,則繼續比較s的第二個字元和 t的第二個字元 若不相等,則比較s的第二個字元和t的第乙個字元,依次比較下去,直到得出最後的匹配結果。bf演算法是...
BF演算法 串的模式匹配演算法
子串的定位運算通常稱為串的模式匹配或串匹配。串的模式匹配設有兩個字串s和t,設s為主串,也稱正文串 設t為子串,也稱模式。在主串s中查詢與模式t相匹配的子串,如果匹配成功,確定相匹配的子串中的第乙個字元在主串s 現的位置。著名的模式匹配演算法有bf演算法和kmp演算法,下面介紹bf演算法。模式匹配不...