数据结构—模式匹配

原理:参考趣学数据结构

代码:

#include<stdio.h>
#include<stdlib.h>
#define N 100
int next[N];
void getNext(char *T,int *next,int m) {//求解当前字符前面的最大公共前缀和后缀int j = 1,k=0;next[j] = 0;//从1开始计算while (j <= m) {if (k == 0 || T[k] == T[j]) {//从下标0开始计算next[++j] = ++k;}else {k = next[k];//回退查找前面的最大公共前缀和后缀}}for (int i = 1; i <= m; i++) {printf("%d ", next[i]);}
}
int KMP(char * S, char* T, int pos, int n, int m) {//KMP算法进行模式匹配int i = pos, j = 1;while (i <= n && j <= m) {if (j==0||S[i] == T[j]) {i++;j++;}else {j = next[j];//根据最大公共前缀和后缀计算的next数组,j回退而i不回退}}if (j = m + 1) {//返回查找成功子串的初始位置printf("查找成功子串的初始位置为:%d\n", i - j);return i - j;}printf("查找子串失败!\n");return -1;
}
int main() {char S[18] = "-adecadecadcbadcb";char T[10] = "-adecadcb";//'\0'字符串结束的标识getNext(T, next, 8);//计算next数组(最大公共前缀和后缀长度)printf("\n");KMP(S, T, 1, 16, 8);//模式匹配printf("\n");system("pause");return 0;
}

测试截图:

时间复杂度O(m+n),空间复杂度O(1)

如果存在什么问题,欢迎批评指正!谢谢!

数据结构---模式匹配相关推荐

  1. 数据结构——模式匹配kmp算法

    暴力算法 //暴力算法 int index(SString S,SString T,int pos) {int i=pos,j=1;while(i<=S[0]&&j<=T[ ...

  2. 数据结构---KMP模式匹配病毒感染人的DNA检测

    数据结构-KMP模式匹配病毒感染人的DNA检测 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> #define N 1 ...

  3. 数据结构---BF字符串模式匹配

    数据结构-BF字符串模式匹配 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> int BF(char * S, cha ...

  4. c语言数据结构字符串匹配,C语言数据结构之模式匹配字符串定位问题

    字符是计算机的单位,字符的值都取决于字符集,匹配字符串需要找有全新的算法,才能提高程序员的工作效率,今天爱站技术频道就为大家带来了C语言数据结构之模式匹配字符串定位问题,大家参考下文学习吧! C语言数 ...

  5. 【数据结构与算法基础】模式匹配问题与KMP算法

    前言 数据结构,一门数据处理的艺术,精巧的结构在一个又一个算法下发挥着他们无与伦比的高效和精密之美,在为信息技术打下坚实地基的同时,也令无数开发者和探索者为之着迷. 也因如此,它作为博主大二上学期最重 ...

  6. 【霍罗维兹数据结构】多维数组 | 字符串 | 模式匹配

    前言: 最近在读霍罗维兹的<数据结构基础>(Fundamentals of Data Structures in C),本篇博客为阅读笔记和知识总结. 目录: Ⅰ.  多维数组的表示 0x ...

  7. [入门必看]数据结构4.2:串的模式匹配

    [入门必看]数据结构4.2:串的模式匹配 第四章 串 4.2 串的模式匹配 知识总览 4.2.1_朴素模式匹配算法 4.2.2_1_KMP算法 4.2.2_2_求next数组 4.2.3_KMP算法的 ...

  8. 数据结构——树、二叉树、森林、哈夫曼树、字符串模式匹配

    %%%%%% 字符串模式匹配算法--详解KMP算法 https://blog.csdn.net/zc474235918/article/details/40474525 http://www.ruan ...

  9. a - 数据结构实验之串一:kmp简单应用_串的两种模式匹配方式(BF/KMP算法)

    串的两种模式匹配方式(BF/KMP算法) 前言 串,又称作字符串,它是由0个或者多个字符所组成的有限序列,串同样可以采用顺序存储和链式存储两种方式进行存储,在主串中查找定位子串问题(模式匹配)是串中最 ...

最新文章

  1. oracle9i安装不上,终于成功安装oracle9i了(Cent OS 4.0+oracle9204)
  2. PageOffice,word常用接口对象--Paragraph类
  3. StringTokenizer类的使用
  4. Poj 1112 Team Them Up!
  5. CLion 下使用 Valgrind 内存检查 [Mac;Linux;Window多平台]
  6. 雷军喜获2019年复旦企业管理杰出贡献奖!
  7. 特斯拉被踢出致命车祸调查组:提前披露信息,涉嫌把责任推向车主
  8. tomcat的acceptCount、maxThreads、connectionTimeout参数调整
  9. 手机Web 开发中图片img 如何等比例缩放
  10. 百度地图依赖包php,调用百度地图
  11. 等级保护三级测评-----云计算安全扩展要求
  12. 1024shop 各个微服务 UML时序图
  13. iOS 10.1发现新漏洞:可绕过“激活锁”强行进入主屏
  14. 数字视频编解码基础知识大全
  15. 木门工厂木门、门套、套线公式和算法
  16. 推荐10款 Java 程序员测试工具
  17. Android 多厂商推送集成
  18. LeetCode.1005-K次取负数组和最大(Maximize Sum Of Array After K Negations)
  19. python自动翻译pdf_在Python中自动执行PDF
  20. 统计字符串中特定字符成对的数量(英文单引号统计)

热门文章

  1. Android之自定义 ActionBar 上的菜单(Menu)文字颜色
  2. sql in 用法(mysql)
  3. c语言程序出现错误,C语言程序错误,不能正常读写文件,求解啊
  4. 裸奔、抽烟、凡尔赛,原来数学家玩得这么野……
  5. 中国古代数学有多牛?
  6. 物理学上最厉害的54个男人!2400年来难以超越,没想到聚在一起后这么震撼......
  7. 如果每一种语言都对应一种女生,你会喜欢哪一个?
  8. 2020下半年新机最新消息_提前剧透 2020 年下半年五大新机
  9. mysql 定义XML字段_MyBatis之基于XML的属性与列名映射
  10. 因子分析最少要有几个因子_Re0:魔女司教和魔女是什么关系?他们的魔女因子是魔女给的吗...