//KMP//求匹配子串 #include#include #include #include #include #include using namespace std;int lena,lenb,next[1000001];//next[a]存放在a长度的子字符串中前后缀相同最长的长度 char a[1000001],b[1000001];void getnxt(){ int num=0; for(int i=2;i<=lenb;i++) { while(num&&b[num+1]!=b[i]) num=next[num]; if(b[num+1]==b[i]) num++; next[i]=num; }}void KMP(){ int num=0; for(int i=1;i<=lena;i++) { while(num&&b[num+1]!=a[i]) num=next[num]; if(b[num+1]==a[i]) num++; if(num==lenb) cout< < >a+1; getchar(); cin>>b+1; lena=strlen(a+1); lenb=strlen(b+1); getnxt(); KMP(); for(int i=1;i<=lenb;i++) cout< <<" "; return;}int main(){ do_something(); return 0;}