目录:
1-引子
2-两种暴力算法的展示
3-KMP详解与源代码
引子
对于用户输入的一个关键词,要在茫茫的信息中检索列举出与之匹配的信息,提高匹配效率和时间无疑是个重点。
我们把问题简化。
对于一个串S,判断串T是否为它的子串。
若是,则返回匹配成功的首位置
若不是,输出-1
方案一:(纯暴力)
#include<iostream>
#include<cstring>
char key[100];
char s[100];
int lens,lenk;
using namespace std;
int main(){
cin>>s>>key;
lens=strlen(s);
lenk=strlen(key);
for(int i=0;i<=lens-lenk;i++){
for(int j=0;j<lenk;j++){
if(s[i+j]!=key[j]){
j=lenk; //模拟跳出
}
if(j==lenk-1){
cout<<i+1;
return 0;
}
}
}
cout<<"False";
return 0;
}
方案二:(暴力的愚蠢优化)
#include<iostream>
#include<cstring>
using namespace std;
char s[1000];
char key[1000]