应用背景:
我们都用过word中的查找功能,这个查找功能就是匹配算法的应用背景。在主串中找到子串,并返回子串在主串中的位置。
暴力匹配:
假设我们的主串是S= “goodgoogle”,子串T=“google”。要想在主串中找到子串最简单的做法如下:
代码实现:
#include<iostream>
using namespace std;
int BFmatching(string S,string T){
int len_S = S.size();
int len_T = T.size();
for(int i = 0;i < (len_S-len_T+1);i++){//i < (len_S-len_T+1)当主串上剩余的字符少于子串时,
int i_S = i; // 就不必进行了,也防止地址越界
for(int j = 0; j < len_T; j++){
if(S[i_S] == T[j]){
i_S++;
if(j == len_T-1){//当子串匹配到最后一个时,表示匹配成功
return i;
}
}
else{
break;
}
}
}
return -1;
}
int main(){
string S = "goodgoogle";
string T = "google";