热门

最新

红包

立Flag

投票

同城

我的

发布
qq_51555188
八阳呀
4 年前
trueqq_51555188

Description
给定一个源串s和n个子串stri。判断stri是否是s的子串。
Input
输入数据有多组,对于每组测试数据 第一行源串S(S长度小于100000),第二行一个整数n, 表示下面有n个查询,每行一个字符串str。
Output
若str是S的子串,输出 yes 否则输出 no
Sample Input:
acmicpczjnuduzongfei
3
icpc
du
liu
Sample Output:
yes
yes
no
我的代码:
#include<stdio.h>
#include<string.h>
int next[100000];
void get_next(char *T,int next[]){
int i=0;next[0]=-1;int j=-1;
while(i<strlen(T)-1){
if(j==-1||T[i]==T[j]){++i;++j;next[i]=j;}
else j=next[j];
}
}
int Index_KMP(char *S,char *T){
int i=0;int j=0;
while(i<=strlen(S)-1&&j<=strlen(T)-1){
if(j==-1||S[i]==T[j]){++i;++j;}
else j=next[j];
}
if(j>strlen(T)-1)return i-strlen(T)+1;
else return -1;
}
int main(){
char S[100000],T[100000];
int n,i;
while(scanf("%s",S)!=EOF){
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%s",T);
get_next(T,next);
if(Index_KMP(S,T)!=-1)printf("yes\n");
else printf("no\n");
}
}
}
我的问题:我觉得我的代码没有问题,但是就是答案错误,望大佬帮帮忙!

你问我答
CSDN App 扫码分享
分享
评论
点赞
打赏
  • 复制链接
  • 举报
下一条:
假如有一组数,比如 23 20 20 17 20 23 20 23 17 20 20 20 怎么用C语言得到3中值滤波的输出值和3平均滤波的输出值?
立即登录