文章目录

  • 1. 概述
  • 2. 代码实现
  • 3. 代码测试

1. 概述

Kmp算法的介绍及思想参阅下面两篇文章:
字符串匹配KMP算法
算法)通俗易懂的字符串匹配KMP算法及求next值算法

2. 代码实现

int cTest::findstr1(const char *src, const char *des)
{int srlen = strlen(src);int delen = strlen(des);int i = 0, j = 0, k = 0;for (int i = 0; i <= srlen - delen; i++){/* code */for (k = i, j = 0; j < delen; ++k, ++j){/* code */if (src[k] != des[j])break;}if (j >= delen)return i;}return -1;
}
void cTest::subNext_kmp(const char *des, int *next)
{next[0] = -1;int i = 0, k = -1;while (des[i] != '\0'){/* code */if (k == -1 || des[k] == des[i])next[++i] = ++k;elsek = next[k];}
}
int cTest::findstr2(const char *src, const char *des, int* next)
{int slen = strlen(src);int dlen = strlen(des);int i = 0, j = 0;while (i < slen && j < dlen){/* code */if (j==-1 || src[i] == des[j]){++i;++j;}else/* code */j = next[j];}if (des[j] == '\0')return i - j;return -1;
}

3. 代码测试

int main(int argc, char* argv[])
{char s[] = "abcabaaaabaabcac";char p[] = "abaabcac";cout << ctestptr.findstr1(s, p) << endl;//shared_ptr<int> next(new int[sizeof(p)],[](int* p){delete[] p;});int *next = (int *)malloc(sizeof(int) * sizeof(p));ctestptr.subNext_kmp(p, next);for (int i = 0; i < strlen(p); ++i)cout << next[i];cout << endl;cout << ctestptr.findstr2(s, p, next) << endl;free(next);
}

C++实现字符串匹配KMP算法相关推荐

  1. kmp算法详解php,php中字符串匹配KMP算法实现例子

    KMP算法是一个比较高级的算法了,加了改进了,下面我们来在php中实现KMP算法,希望例子对各位同学会带来帮助哦. kmp算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J. ...

  2. 字符串匹配 KMP算法

    问题描述:字符串匹配即查找待匹配字符串(模式串)p在主串s中的位置.一般处理这种问题往往采用简单粗暴的方法--暴力匹配法.所谓暴力匹配法,就是对主串s的每一个字符与要匹配的字符串p的每个字符进行逐一匹 ...

  3. 字符串匹配——KMP算法

    字符串匹配--KMP算法 ​ 字符串匹配是计算机编程中最常使用到的基础算法之一.字符串匹配相关的算法很多,Knuth-Morris-Pratt(KMP)算法是最常用的之一.最近在学习KMP算法,学习了 ...

  4. 字符串匹配KMP算法

    字符串匹配KMP KMP过程其实就是去找下一个更好的状态的过程,省略去了中间穷举的无用过程,直接跳到下一个更好的状态,通过模式串本身的信息,站在模式串的角度来考虑问题 取长的一对 若想让模式串直接从S ...

  5. C语言实现字符串匹配KMP算法

    相信很多人(包括自己)初识KMP算法的时候始终是丈二和尚摸不着头脑,要么完全不知所云,要么看不懂书上的解释,要么自己觉得好像心里了解KMP算法的意思,却说不出个究竟,所谓知其然不知其所以然是也. 字符 ...

  6. 【数据结构与算法】字符串匹配 KMP 算法

    单模式串匹配 BF 算法和 RK 算法 BM 算法和 KMP 算法 多模式串匹配算法 Trie 树和 AC 自动机 KMP 算法 KMP 算法是根据三位作者(D.E.Knuth,J.H.Morris ...

  7. 字符串匹配KMP算法的讲解C++

    转自http://blog.csdn.net/starstar1992/article/details/54913261 也可以参考http://blog.csdn.net/liu940204/art ...

  8. 字符串匹配KMP算法的理解(详细)

    1. 引言 本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱.所以一直想找机会重新写下KMP,但苦于一直以来对KMP的理解始终不够,故才迟迟没有修改本文. ...

  9. 字符串匹配——KMP算法【C语言】

    KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特-莫里斯-普拉特操作(简称KMP算法).KMP算法的核心是利用匹配失败后 ...

最新文章

  1. python爬取携程酒店信息_不写代码玩转爬虫实例(3) - 抓取携程酒店信息
  2. 8月18日 | 智能车竞赛云比赛过半,华南赛区成绩小结
  3. wireshark tcp data中文_wireshark流量分析入门
  4. TCP协议详解----Linux学习笔记
  5. .NET Core 迁移躺坑记续集--Win下莫名其妙的超时
  6. eolinker使用初体验(一)
  7. 60-179-024-使用-TypeInfo-Flink类型系统TypeIinformation
  8. MCS:随机数的生成
  9. .NET Framework 中的并行编程
  10. 采样方法(二)MCMC相关算法介绍及代码实现
  11. tbslog乱码转换_word 编码 转换器 在线转换器
  12. 小米摄像头结合samba共享存储实现视频实时转存
  13. 支付宝转账提现相关问题
  14. 同位素的研究方法和技术
  15. 使用thop库对yolo等深度学习模型的FLOPS进行计算
  16. includes的用法
  17. 唠一唠 消息可靠性保障消息幂等性处理 (RabbitMQ实际应用问题)
  18. html+javascript实现广告窗自由浮动
  19. php5 geoip,php5.2 geoip pecl模块安装
  20. String.format()的详细用法

热门文章

  1. 寒冬已至?四面楚歌的Android工程师该何去何从
  2. Pr 入门教程如何设置动画旋转图形?
  3. IIS支持APK文件下载的方法
  4. PC端体验效果最佳epub阅读器——iRead爱读书
  5. vue疫情大屏数据展示+数据导出+地图图片下载
  6. 低通滤波器转带通滤波器公式由来_射频/微波滤波器
  7. 腾讯云简单使用-Python
  8. Android 头像上传的实现
  9. mongodb aggregate按日期分组统计及spring mongo实现
  10. 奥塔在线:Centos7下Nginx的安装