2 条题解

  • 1
    @ 2021-12-18 12:00:11
    #include<bits/stdc++.h>
    using namespace std;
    int nxt[1000001];
    char a[10000001];
    void getnext(){
    	int j=0;
    	int len=strlen(a+1);
    	for (int i=1;i<=len;i++){
    		while(j>0&&a[i+1]!=a[j+1])j=nxt[j];
    		if (a[i+1]==a[i+1]){
    			j++;
    		}
    		nxt[i+1]=j;
    	}
    } 
    int main() {
    	int n;
    	cin>>n;
    	
    	scanf("%s",a+1);
    	getnext();
    	if (a[1]==a[n]){
    	cout<<"1 ";
    	}
    	for (int i=1;i<=n;i++){
    		if (nxt[i]){
    			cout<<i<<" ";
    		}
    	}
    	return 0;
    }
    • -1
      @ 2021-12-18 11:59:50

      a

      • 1

      信息

      ID
      1757
      时间
      2000ms
      内存
      64MiB
      难度
      10
      标签
      (无)
      递交数
      2
      已通过
      1
      上传者