kmp算法的实现
来源:互联网 发布:telnet 80端口不通 编辑:程序博客网 时间:2024/05/25 19:58
#include <stdio.h>#include <string.h>#include <assert.h>//计算next数组void get_next(char *pstr, int next[]){assert(pstr != NULL);int len = strlen(pstr);next[0] = -1;int pre = -1;int post = 0;while (post < len - 1){if (pre == -1 || pstr[post] == pstr[pre]){++ pre;++ post;next[post] = pre;}else{pre = next[pre];}}}//kmp算法int kmp(char *dstr, char *pstr, int next[]){assert(dstr != NULL && pstr != NULL);int i, j;int dlen = strlen(dstr);int plen = strlen(pstr);i = j = 0;while (i < dlen && j < plen){if (j == -1 || dstr[i] == pstr[j]){++i;++j;}else{j = next[j];}}if (j == plen)return i - j;elsereturn -1;}int main(){char dstr[20], pstr[10];int next[10], tmp;scanf("%s", pstr);scanf("%s", dstr);get_next(pstr, next);tmp = kmp(dstr, pstr, next);printf("%d\n", tmp);return 0;}
0 0
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- kmp算法的实现
- kmp算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- java实现的KMP算法
- C++实现的KMP算法
- KMP算法的JAVA实现
- C++实现将十进制数转换为小于等于九的任意进制
- 在32位处理器上指针的长度为4字节,为什么是4字节,而不是16字节,或者32字节
- 查找重复数字2
- android 自定义button
- 把二元查找树转变成排序的双向链表
- kmp算法的实现
- hdu2023求品均成绩
- CodeBlock 快捷键大全
- strcpy和memcpy的区别
- linux中pid gid tgid tid的区别和联系
- leetcode 之 Jump Game
- 常见编程题
- Linux下使用socket传输文件的C语言简单实现
- Eclipse+Spark 开发