/*T为非空串。若主串S中的第pos个字符之后存在与T相等的子串,*/
/*则返回第一个这样的子串在S中的位置,否则返回0.*/
#include<iostream>
#include<string>
using namespace std;
int Index(string S,string T,int pos) //S为你要在T串中匹配的串
{
int i=pos; //用于主串S当前位置下标,从pos位置开始匹配
int j=0; //串T的当前下标
int LengthS=S.length();
int LengthT=T.length();
while(i<LengthS && j<LengthT)
{
if(S[i]==T[j])
{
++i;
++j;
}
else
{
i=i-j+1;
j=0;
}
}
if(j>=LengthT)
{
return i-LengthT;
}
else
{
return -1;
}
}
int main()
{
string T="abcdefg";
string S="efg";
int index=Index(T,S,0);
cout<<index<<endl;
return 0;
}
朴素的模式匹配算法
最新推荐文章于 2024-04-11 10:24:35 发布