kmp 输入 char * text,char * patern,int *next

首先初始化 next

根据next 找子串

首先make_next 开始比较 从1开始 q为next对应字符串下标

void make_next(char * pattern,int *next)
{int n = strlen(pattern);next[0] =0;for(int q=1,k=0;q<n;q++){while(q>0&&pattern[q]!=pattern[k]){k = next[k-1];}if(pattern[q] == pattern[k]){k++;}next[q]=k;}
}

kmp 主体部分 在得到next数组后

int kmp(const char* text,const char *pattern,int *next)
{int q,k;int n =strlen(text);int m=strlen(pattern);make_next(pattern,next);for(q=0,k=0;q<m;q++){while(k>0&&pattern[k]!= text[q]){k=next[k];}if(pattern[k]==text[q]){k++;}if(k == m){printf("是子串");return 0;break;}return -1;
}

9-算法 kmp算法相关推荐

  1. 字符串匹配算法(BF算法KMP算法)

    字符串匹配算法 暴力匹配(BF)算法 KMP算法 next数组 求next数组的练习 next数组的优化(nextval数组) 练习 暴力匹配(BF)算法 BF算法,即暴力(Brute Force)算 ...

  2. 算法 - KMP算法原理顿悟有感

    算法 - KMP算法原理顿悟有感 KMP? KMP核心思想 举个栗子 上点代码 next数组 (1)若P~j~ == P~t~ (2) 若P~j~ 和 P~t~不相等 改进上面的KMP算法 nextv ...

  3. 模式匹配(Java)——烤馍片算法(KMP算法)

    模式匹配(Java) 模式匹配 模式匹配是数据结构中字符串的一种基本运算. 由于字符串我们学习过了,大部分操作都比较清楚,但是模式匹配相对来说操作稍微有些难度,所以我们在这里简单的进行讲述. 模式匹配 ...

  4. 详解图示+例题演练——BF算法+KMP算法基本原理

    KMP算法一直让我们又爱又恨,难以理解却又效率很高. 看了看网上的KMP教程,无论是博客还是视频,大多以文字和逻辑推导的方式呈现,纷繁复杂,晦涩难懂.这会让我们在初学时多走很多弯路. 人类接受知识最直 ...

  5. 字符串的模式匹配--BF算法KMP算法

    BF算法是基于主串指针回溯,重新与子串进行逐字符进行比较,主串为S什么要进行回溯呢,原因在于模式P中存在相同的字符或者说由字符(串)存在重复(模式的部分匹配性质),设想如果模式P中字符各不相同,主串就 ...

  6. 用C语言实现KMP算法,KMP算法 纯C实现

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我自己写的KMP算法: int nt[256]; void get_next1(char* T, int next[], int tlen) { int  ...

  7. (C语言)数据结构算法-病毒感染检测(BF算法KMP算法)

    病毒感染检测: 医学研究者最近发现了某些新病毒,得知它们的DNA序列都是环状的.为了快速检测出患者是否感染了相应的病毒,研究者将患者的DNA和病毒的DNA均表示成一些字母组成的字符串序列,然后检测某种 ...

  8. 字符串算法——KMP算法C++详解

    简介 KMP 算法是 D.E.Knuth.J,H,Morris 和 V.R.Pratt 三位神人共同提出的,称之为 Knuth-Morria-Pratt 算法,简称 KMP 算法.该算法相对于 Bru ...

  9. Knuth-Morris-Pratt 算法(KMP算法)

    Knuth-Morris-Pratt 算法,简称 \text{KMP}KMP 算法,由 \text{Donald Knuth}Donald Knuth.\text{James H. Morris}Ja ...

  10. 算法 - KMP算法(字符串匹配)

    百度的一个图文介绍http://www.sohu.com/a/336648975_453160 package Algorithm.kmp;import java.util.Arrays;public ...

最新文章

  1. 【Linux系统】基础总结
  2. 三十九、文件的逻辑结构
  3. c#window服务程序
  4. flutter制作具有自定义导航栏的渐进式 Web 应用程序
  5. 通俗讲清楚为什么使用信息熵增益比而不是信息熵增益?
  6. html:(33):文字排版粗体和斜体
  7. 怎么引jsp包_电机引接线的制作流程防护等级
  8. android 多进程 坑,Android 开发中踩过的坑之八:多进程问题
  9. ASP基础教程:ASP脚本变量、函数、过程和条件语句
  10. NYOJ 61:传纸条(一)(三维DP)
  11. 板子无法进入loader模式升级固件时需短接emmc或flash
  12. 自动化接口用例从 1 到 1000 过程中的实践和思考
  13. 创业公司的技术总监,去上市公司面试,结果凉了。
  14. jQuery插件之jqzoom放大镜插件
  15. Centos 7 x64 英文版安装
  16. Linux内核调试方法总结
  17. java-练习题-小学算术题
  18. MySQL的启动方式
  19. springsecurity整合jwt实现授权认证,权限分配
  20. android不能访问数据库文件,android下访问已存在的sqlite数据库文件的办法

热门文章

  1. 用python编写一个求偶数阶乘的函数_一行Python代码写阶乘函数
  2. ionic 禁止横屏处理
  3. 小程序请求php接口返回错误$HTTP_RAW_POST_DATA is deprecated......
  4. 计算机网络实验五静态路由与RIP协议,实验锐捷实训8-1--配置静态路由和rip协议...
  5. springMVC环境搭建
  6. linux root 设置中文,ubuntu 8.04 root用户下的中文环境配置-Linux频道-中国IT实验室
  7. android system读写权限设置,当然需要root访问权限才能写入Android的system目录
  8. java容易搞混的技术_Java中比较容易混淆的知识点
  9. html做app的切换效果,Vue-router结合transition实现app动画切换效果实例分享
  10. js ajax 访问java函数,将url分配给Java EE项目中的ajax(js)函数