WA70分求调

#include<bits/stdc++.h>
using namespace std;
string a,b;
int x,n,m,nxt[1000001];
void buildnext(){
    int i=1,j=-1;
    nxt[0]=-1;
	while(i<m){
		if(j==-1||b[i]==b[j]){
			i++,j++;
			nxt[i]=j;
		}else j=nxt[j];
	}
}int kmp(){
	int i=0,j=0;
	while(i<n&&j<m){
		if(j==-1||a[i]==b[j])i++,j++;
		else j=nxt[j];
	}return j==m?i-j:-1;
}int main(){
    cin>>a>>b;
    n=a.size();m=b.size();
    buildnext();
    x=kmp();
    while(x!=-1){
        a.erase(a.begin()+x,a.begin()+x+m);
        x=kmp();
    }cout<<a;
    return 0;
}

不吸氧AC的一个点会TLE
@chenxi1 @稻叶昙 再帮我调一个关于KMP的题目吧,球球了

好 我看看

怎么都没人啊。。。
只能请人来调了QAQ
@我命由我不由天 @yhxyd0109 @stringdp100005

啊,虽然我看了,但我不会啊,还没学

全剧终(bushi

还有谁能帮我调一下

本蒟蒻还是太菜了

啊?蓝题
不会

你不是做出黑题了吗?而且还是提高组的巨佬

你找找蓝题里面有没有这题

好吧没有一个

我不会 KMP

#include<iostream>
#include<vector>
using namespace std;
int kmp(string a,string b){
	int i=1,j=-1,n=a.size(),m=b.size();
	vector<int>next={-1};
	while(i<m){
		if(j==-1||b[i]==b[j]){
			i++,j++;
			next.push_back(j);
		}else j=next[j];
	}i=j=0;
	while(i<n&&j<m){
		if(j==-1||a[i]==b[j])i++,j++;
		else j=next[j];
	}return j==m?i-j:-1;
}int main(){
	string a,b;
	cin>>a>>b;
	cout<<kmp(a,b);
	return 0;
}

板子给出来了

建议看题解吧

好吧

但是题解我看不懂