2 条题解
-
1
#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
信息
- ID
- 1757
- 时间
- 2000ms
- 内存
- 64MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 2
- 已通过
- 1
- 上传者