传送门 kmp模板题。 话说这么小的数据还要用kmp吗?
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdlib>
using namespace std;
char a[
105],b[
105];
int l1,l2,nxt[
105],t;
int main(){
scanf(
"%s%s",a+
1,b+
1);
l1=
strlen(a+
1);
l2=
strlen(b+
1);
for (
int i=
2;i<=l1;i++){
while (t&&a[i]!=a[t+
1]) t=nxt[t];
if (a[i]==a[t+
1]) t++;
nxt[i]=t;
}
t=
0;
for (
int i=
1;i<=l1;i++){
while (t&&a[i]!=b[t+
1]) t=nxt[t];
if (a[i]==b[t+
1]) t++;
if (t==l2){
printf(
"%d",i-l2+
1);
return 0;
}
}
}
转载请注明原文地址: https://ju.6miu.com/read-50023.html