kmp算法的c语言,KMP算法 纯C实现
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我自己写的KMP算法:
int nt[256];
void get_next1(char* T, int next[], int tlen)
{
int i = 0;
int j = 1;
next[0] = -1;
while( j
{
if ( T[i] == T[j] )
{
next[j] = 0;
i++;
}
else
{
next[j] = i;
i = 0;
}
j++;
}
}
int Index_KMP1(char* S, char* T,int slen, int tlen)
{
int i=0, j=0;
while( j
{
if( j==-1 || S[i] == T[j] )
{
i++; j++;
}
else
{
j = nt1[j];
}
}
if( j == tlen )
{
return i-j;
}
else
{
return -1;
}
}
int main(int argc, char* argv[])
{
char ch[] = "aaaaa";
int len = (int)strlen(ch);
get_next1(ch, nt1, len);
for(int i=0; i
{
printf("%d[%c]=%d\n", i, ch[i], nt1[i]);
}
char sch[] = "abaavaaaaaab";
//char sch[] = "aawsdvddfabcdabceabcdfdwdasd";
int slen = (int)strlen(sch);
int ret = Index_KMP1(sch, ch, slen, len);
if(ret != -1)
{
char* tmp = sch + ret;
printf("%d, %s\n", ret, tmp);
}
else
printf("not find\n");
return 0;
}
我发现在数据结构的书中,用的SString类型,它的第一位是该字符的长度,所以和我们平时所需要的KMP算法不太兼容。
有什么问题,可以发到我的邮箱:bobyuworker@126.com
kmp算法的c语言,KMP算法 纯C实现相关推荐
- k均值聚类算法案例 r语言iris_K-means算法原理
聚类的基本思想 俗话说"物以类聚,人以群分" 聚类(Clustering)是一种无监督学习(unsupervised learning),简单地说就是把相似的对象归到同一簇中.簇内 ...
- c语言编程算法模板,C语言编程算法精选.doc
C语言编程算法精选 二级C语言编程算法精选一.数学计算1.编写函数double?fun功能是:根据公式计算s,计算结果通过形参指针sn传回:n通过形参传入.? ? 1? ?? ?1? ?? ? 1? ...
- c语言iso校验算法,模式识别c语言ISODATA算法.doc
模式识别c语言ISODATA算法.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. ...
- c语言数据交换的算法流程图,C语言冒泡排序算法浅析
C语言泡排冒序算浅析 法中刘旭 ( 江师范丽等专高学科校数与计算机学科学系 ) [ 摘]要泡冒排序算法 C语言常见是排序算法之,一该算法的优点 逻辑是清晰,代码简洁,点缺是时复杂度间高较本文介.绍了统 ...
- c语言贪心算法ppt,c语言(贪心算法).ppt
c语言(贪心算法).ppt ACM程序设计,杭州电子科技大学 刘春英 ,2018/12/23,2,最近几天,,你 了吗,AC,2018/12/23,3,每周一星(9),qfwr,2018/12/23, ...
- cordic算法反正切c语言,Cordic 算法之 反正切
在通信的算法中,常采用Cordic算法之一,知道角度产生正交的的正弦余弦, 或者知道正弦和余弦求角度,求反正切. 1. 求正弦和余弦值. 方法:旋转角度,得到正弦余弦值: 再旋转角度,到达下一个正弦余 ...
- 字符串匹配KMP算法设计C语言,KMP字符串匹配算法笔记
网上有很多解释KMP算法的文章,A_B_C_ABC的这篇很详细,反复看了好几遍,总算理解了个大概,但是总觉得没那么爽快.其实,一种算法各人有各人的理解方法,找到适合自己理解的才容易记住.下面是我对这个 ...
- c语言kmp算法代码,C语言KMP算法的实现
KMP算法在模式与主串之间存在许多"部分匹配"的情况下,比BF算法快.(注意,接下来的串都是以下标为1作为起始储存位置.) 下面说一下实现代码: 首先是预定义和类型定义: #def ...
- python二分法查找算法_顺序查找算法和折半(二分法)查找算法,C语言查找算法详解...
查找是指在大量的信息中寻找一个特定的信息.在计算机中,查找是非常重要的一个应用,比如"百度".查找算法的好坏直接影响查找的速度. 常用的查找算法主要有顺序查找和折半(二分法)查找: ...
最新文章
- python之模块base64
- 【目录】 软件测试全栈需要学习什么? 软件测试的各个阶段 ,软件测试学习路径,软件测试方向选择,软件测试的薪资待遇。...
- zabbix 彻底解决图片中文乱码
- 创建总账科目类型会计凭证
- HtmlAgilityPack/xpath
- python实现炫酷二维码
- 用于快速排查Java的CPU性能问题(top us值过高)
- 1145: 零起点学算法52——数组中删数II
- 仿XP系统的任务栏菜单
- Eclipse下载安装配置
- Excel数据填充技巧
- Linux时间同步(Fri Nov 16 12:12:13 Local time zone must be set--see zic manual page 2018)解决办法
- 【采集项目-(4)业务数据采集】
- Multisim中元器件的翻转方法以及快捷键,最详细,最清晰!!!
- 【社区团购平台排名】社区团购平台有哪些?
- VUE项目(仿商城)
- 【腾讯云】云服务器 Nginx 内网访问 COS 省流量费
- Rosalind第10题——ros_bio10_CONS
- OceanBase 业务数据库实践(二)── DB2 迁移
- 爱码哥移动开发平台的4大开发环境
热门文章
- python跨包导入包_python引入跨模块包
- DOxygen for C++使用说明——Markdown支持
- oracle数据库主键自增序列_Oracle数据库序列详解
- win服务器创建文件夹命令,Win10系统如利用命令提示符或WSL创建任意大小空白文件...
- 怎么制作铁闸门_“短笛”拿铁,最近的心头好!
- ES6学习笔记六(Iterator和for..of)
- xshell连接linux出现乱码
- mysql 随机选取一条记录
- 蓝桥 BEGIN4 - Fibonacci数列
- 【洛谷P2023】维护序列