KMP
KMP
int i = 1, len = 0;
while (i < pattern.length())
{
if (pattern[i] == pattern[len])
{
len++;
lps.push_back(len);
i++;
}
else
{
if (len == 0)
{
lps.push_back(0);
i++;
}
else
{
while (len > 0 || pattern[i] == pattern[len])
len = lps[len - 1];
}
}
}
return lps;
}
// return true;
// contains = true;
j = lps[j] - 1;
cout << "Pattern found at index " << i - (int)pattern.length() + 1 <<
endl;
}
}
return contains;
}
int main()
{
string s, pattern;
getline(cin, s);
getline(cin, pattern);
bool a = kmpMatching(s, pattern);
// cout << (a ? "YES" : "NO") << endl;
// bool a = kmpMatching("asdiiababbcawiwabcndababbcadnabcdassabc", "ababbca");
// cout << a << endl;
// return 0;
}