kmp
手动模拟出奇迹
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int s=0,f=1;
char ch=getchar();
while(ch<'0'||'9'<ch) {if(ch=='-') f=-1;ch=getchar();}
while('0'<=ch&&ch<='9') {s=s*10+(ch^48);ch=getchar();}
return s*f;
}
const int N=1e6+3;
char a[N],b[N];
int lena,lenb;
int fail[N];
int main(){
scanf("%s%s",a+1,b+1);
lena=strlen(a+1);lenb=strlen(b+1);
int j=0;
for(int i=2;i<=lenb;++i){
while(j&&b[j+1]!=b[i]) j=fail[j];
if(b[j+1]==b[i]) ++j;
fail[i]=j;
}
j=0;
for(int i=1;i<=lena;++i){
while(j&&b[j+1]!=a[i]) j=fail[j];
if(b[j+1]==a[i]) ++j;
if(j==lenb){
printf("%d\n",i-lenb+1);
j=fail[j];
}
}
for(int i=1;i<=lenb;++i) printf("%d ",fail[i]);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具