【这代码写的我云里雾里,全靠瞎蒙,反正是蒙上了】
【存个档】
#include <studio>
#include <string>
#include <vector>
using namespace;
int main()
{
string pattern = "qwwqui";
string s = "sgyuigqwwquiihso";
int length = pattern.size();
vector<int> next(length,-1);
int i = 0;
int j = -1;
while( i < length)
{
if(j == -1 || pattern[i] == pattern[j])
{
i++;
j++;
next[i] = pattern[i] == pattern[j] ? next[j] : j;
}
else
j = next[j];
}
int m = 0;
int n = 0;
while(m < s.size() && n < length)
{
if(n == -1 || s[m] == pattern[n])
{
n++;
m++;
}
else
n = next[n];
}
if(n == length)
cout <<m - n ;
cout << "NO";
}