期末作业急求!!!用C语言编写函数计算字符串中子串出现的次数。

编写函数计算字符串中子串出现的次数,如“abcdefabcdefabcdef”中出现子串“cde”三次(不允许使用标准库函数子串查找功能)。主函数实现输入字符串、输出字符... 编写函数计算字符串中子串出现的次数,如“abcdefabcdefabcdef”中出现子串“cde”三次(不允许使用标准库函数子串查找功能)。主函数实现输入字符串、输出字符串以及调用计算子串出现次数函数步骤。要求数据结构定义,急求各位大神谢谢!!! 展开
 我来答
微俊king
2015-06-25 · TA获得超过576个赞
知道小有建树答主
回答量:626
采纳率:50%
帮助的人:565万
展开全部
#include <stdio.h>
#include <string.h>
#define MAX 1000
int next[MAX];
int s_len;
char str[MAX], str_t[MAX];

void get_next(){
int i;
next[0] = -1;
for(i = 1; i < s_len; ++i){

int j = next[i-1];
while(str_t[i] != str_t[j+1] && j != -1)
j = next[j];
if(str_t[i] == str_t[j+1])
next[i] = j + 1;
else
next[i] = -1;

}
}

int kmp(char *str, char *str_t){

int i;
int len = strlen(str);
int j;
int cnt = 0;
s_len = strlen(str_t);
get_next();
j = -1;
for(i = 0; i < len; ++i){

if(str[i] != str_t[j+1] && j != -1)
j = next[j];
if(str[i] == str_t[j+1]){
++j;
}
if(j == s_len-1){
cnt++;
j = next[j];
}
}
return cnt;
}



int main(){

scanf("%s %s", str, str_t);

printf("cnt %d\n", kmp(str, str_t));
return 0;
}

输入 abcdefabcdefabcdef cde

追问
可以帮忙谢谢数据结构定义吗 谢谢!!!
追答
什么意思。。。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式