假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢?
1.暴力
思想:文本串s[i],模式串p[j],比较时if(s[i]==p[j]),为真i++,j++循环,为假j=0,i=i-(j-1),继续比较。
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
char s[21],p[21];
int main()
{
gets(s);
gets(p);
int len=strlen(p);
int i=0,j=0;
while(j<len)
{
if(s[i]==p[j])
{
i++;
j++;
// cout<<"i:"<<i<<","<<"j:"<<j<<endl;
}
else
{
i=i-(j-1);
j=0;
// cout<<"i:"<<i<<","<<"j:"<<j<<endl;
}
}
cout<<i-j<<endl;
}
2.KMP