hdoj 1686 Oulipo
  dUbcXj9lnElT 2023年11月02日 28 0


题目链接:​​Oulipo​

题目链接:给你模式串和原串,问模式串在原串中出现的次数

题目思路:直接KMP就好

#include <bits/stdc++.h>

using namespace std;
const int maxn = 1e6+10;

int Next[maxn];
char str[maxn],mo[maxn];

void getNext(){
int i = 0,j = -1,len = strlen(mo);
while(i < len){
if(j == -1||mo[i] == mo[j])
Next[++i] = ++j;
else j = Next[j];
}
}

int kmp(){
int i = 0,j = 0,l1 = strlen(str),l2 = strlen(mo);
int ans = 0;
while(i < l1){
if(j == -1||mo[j] == str[i])
i++,j++;
else j = Next[j];
if(j == l2) ans++;
}
return ans;
}

int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%s%s",mo,str);
Next[0] = -1;
getNext();
printf("%d\n",kmp());
}
return 0;
}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  rEZj93RghFYQ   2023年11月02日   19   0   0 i++leetcode-java
dUbcXj9lnElT
最新推荐 更多