1 条题解
-
1
#include<bits/stdc++.h> using namespace std; const int N=2e6+10; int b[N],len1,len2,lens; string s1,s2,ss; int main(){ ios::sync_with_stdio(0);cin.tie(nullptr);cout.tie(nullptr); cin>>s1>>s2; ss=s2+"@"+s1; len1=s1.size();len2=s2.size();lens=ss.size(); int j=0; for(int i=1;i<lens;i++){ while(j>0&&ss[i]!=ss[j]){ j=b[j-1]; } if(ss[i]==ss[j]){ j++; } b[i]=j; } for(int i=len2+1;i<=len1+len2;i++){ if(b[i]==len2){ cout<<i-len2-len2+1<<"\n"; } } for(int i=0;i<len2;i++){ cout<<b[i]<<" "; } return 0; }
信息
- ID
- 7405
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 6
- 标签
- 递交数
- 60
- 已通过
- 30
- 上传者