TLE了???
查看原帖
TLE了???
782210
Yu_Chengxuan楼主2024/3/29 20:52

求调

#include <bits/stdc++.h>
using namespace std;

const int maxn=1e6+10;
int anext[maxn];
int j=0,i=0;
void build_next(string x){
    int same=0;
    i=1;
    while (i<x.size()){
        if (x[same]==x[i]){
            same++;
            anext[i]=same;
            i++;
        }
        else{
            if (same==0){
                anext[i]=0;
                i++;
            }
            else{
                same = anext[i-1];
            }
        }
    }
}
int main(){
    string a,b;
    cin >> a >> b;
    build_next(b);
    i=0;
    while (i<a.size()){
        if (a[i]==b[j]){
            i++;
            j++;
        }
        else if(j>0){
            j=anext[j-1];
        }
        else{
            i++;
        }
        if (j==b.size()){
            cout << i-j+1 << "\n";
        }
    }
    for (int i=0;i<b.size();i++){
        cout << anext[i] << " ";
    }
}
2024/3/29 20:52
加载中...