codevs 1204 寻找子串位置

    xiaoxiao2021-03-25  38

    传送门 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

    最新回复(0)