#include"iostream"
#include"string"
using namespace std;
string str1="abcdefghasababacdfds";
string str2="bcdefghasababacdfdssd";
int find(string a,string b)
{
int k=0,j=0;
while(k<a.size()&&j<b.size())
{
if(a[k]==b[j])
{
k++;
j++;
}
else
{
k=k-j+1;
j=0;
}
}
if(j==b.size())
return k-j;
else
return -1;
}
int main()
{
cout<<find(str1,str2)<<endl;
return 0;
}
遍历字符串,当某个字符和要子字符串的第一个字符相匹配是从这里匹配字符,如果匹配成功则退出匹配,如果匹配失败则从第一个匹配的位置向后走一个再寻找匹配的位置。