图论

数据结构

数学

其他:

洛谷模板:a,b两个字符串,求b串在a串中出现的位置

【模板】NOIP模板汇总
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char s1[1000009],s2[1001];
int len1,len2,Next[1001];
int main(){
    scanf("%s%s",s1+1,s2+1);
    len1=strlen(s1+1);len2=strlen(s2+1);
    for(int i=2,k=0;i<=len2;i++){
        for(;s2[i]!=s2[k+1]&&k>0;k=Next[k]);
        if(s2[i]==s2[k+1])Next[i]=++k;
    }
    for(int i=1,k=0;i<=len1;i++){
        for(;s1[i]!=s2[k+1]&&k>0;k=Next[k]);
        if(s1[i]==s2[k+1])++k;
        if(k==len2)printf("%d\n",i-len2+1),k=Next[k];
    }
    for(int i=1;i<=len2;i++)printf("%d ",Next[i]);
    return 0;
}
KMP

相关文章:

  • 2022-12-23
  • 2021-11-19
  • 2022-12-23
  • 2022-12-23
  • 2021-11-09
  • 2021-11-12
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-11
  • 2022-12-23
  • 2022-12-23
  • 2021-06-12
  • 2021-12-27
相关资源
相似解决方案