前面都过了但Subtask #3 RE
查看原帖
前面都过了但Subtask #3 RE
1190790
qfly楼主2024/8/6 17:38
#include<bits/stdc++.h>
using namespace std;
int main()
{
	string s;
	string p;
	cin >> s >> p;
	vector<int> ne(10010);
	ne[0] = 0;
	for (int i = 1, j = 0; i < p.size(); i++)
	{
		while (j&&p[i] != p[j]) {
			j = ne[j - 1];
		}
		if (p[i] == p[j])
		{
			ne[i] = ++j;
		}
		else {
			ne[i] = j;
		}
	}
	for (int i = 0, j = 0; i < s.size(); i++)
	{
		while (j&&s[i] != p[j]) {
			j = ne[j - 1];
		}
		if (s[i] == p[j])
		{
			j++;
		}
		if (j == p.size())
		{
			cout << i - p.size() + 2 << endl;
			j = ne[j - 1];
		}	
	}
	for (int i=0;i<p.size();i++)
			cout << ne[i] << " ";
}
2024/8/6 17:38
加载中...