kmp
来源:互联网 发布:课程与教学论 知乎 编辑:程序博客网 时间:2024/05/29 19:24
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int biao[1005],i,j,s1,s2;
char a[1000005],b[1005];
int main()
{
scanf("%s",a+1);
scanf("%s",b+1);
s1=strlen(a+1);
s2=strlen(b+1);
biao[1]=0;
j=0;
for(i=2;i<=s2;i++)
{
while(j!=0&&b[i]!=b[j+1])j=biao[j];
if(b[i]==b[j+1])++j;
biao[i]=j;
}
j=0;
for(i=1;i<=s1;i++)
{
while(j!=0&&a[i]!=b[j+1])j=biao[j];
if(a[i]==b[j+1])++j;
if(j==s2)
{
cout<<i-s2+1<<endl;
j=biao[j];
}
}
for(i=1;i<=s2;i++)
{
cout<<biao[i]<<" ";
}
}
#include<cstring>
#include<cstdio>
using namespace std;
int biao[1005],i,j,s1,s2;
char a[1000005],b[1005];
int main()
{
scanf("%s",a+1);
scanf("%s",b+1);
s1=strlen(a+1);
s2=strlen(b+1);
biao[1]=0;
j=0;
for(i=2;i<=s2;i++)
{
while(j!=0&&b[i]!=b[j+1])j=biao[j];
if(b[i]==b[j+1])++j;
biao[i]=j;
}
j=0;
for(i=1;i<=s1;i++)
{
while(j!=0&&a[i]!=b[j+1])j=biao[j];
if(a[i]==b[j+1])++j;
if(j==s2)
{
cout<<i-s2+1<<endl;
j=biao[j];
}
}
for(i=1;i<=s2;i++)
{
cout<<biao[i]<<" ";
}
}
1 0
- KMP
- KMP
- KMP
- KMP
- KMP
- KMP
- kmp
- kmp
- KMP
- kmp
- KMP
- KMP
- KMP
- kmp
- KMP
- KMP
- kmp
- KMP
- 【转】React 组件间通讯
- java Swing 要点
- JavaEE复习指南
- 强烈推荐android studio用的几个插件
- throw er; Unhandled 'error' event
- kmp
- 第三方登录—OAuth2.0协议
- 【BZOJ 1009】GT考试
- 80C51 K1控制D1发光
- Color Map Optimization for 3D Reconstruction with Consumer Depth Cameras
- 模拟Json加载数据(淘宝购物车效果1)
- 决策树、ID3、C4.5以及CART算法小结
- 直接拿来用!最火的Android开源项目(一)
- 程序员面试金典: 9.4树与图 4.9在二叉树中,打印结点数值总和等于给定值的所有路径