#include<bits/stdc++.h>
using namespace std;
string a;
string b;
int nextn[256];
void init(void)
{
memset(nextn,-1,sizeof(nextn));
int len = b.size();
for(int i = 0 ; i < len; i++) nextn[b[i]] = i;
}
int sunday(void)
{
init();
int alen = a.size();
int blen = b.size();
if(alen==0) return -1;
for(int i = 0 ; i <= alen-blen;)
{
int j = i;
int k = 0;
for(; a[j]==b[k] && j<alen && k<blen; j++,k++);
if(k==blen) return i;
else
{
if(i+blen<alen) i+=(blen-nextn[a[i+blen]]);
else return -1;
}
}
return -1;
}
int main(void)
{
cin>>a;
cin>>b;
cout<<sunday()<<endl;
return 0;
}
参考:http://blog.csdn.net/laojiu_/article/details/50767615