9-算法 kmp算法
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算法相关推荐
- 字符串匹配算法(BF算法KMP算法)
字符串匹配算法 暴力匹配(BF)算法 KMP算法 next数组 求next数组的练习 next数组的优化(nextval数组) 练习 暴力匹配(BF)算法 BF算法,即暴力(Brute Force)算 ...
- 算法 - KMP算法原理顿悟有感
算法 - KMP算法原理顿悟有感 KMP? KMP核心思想 举个栗子 上点代码 next数组 (1)若P~j~ == P~t~ (2) 若P~j~ 和 P~t~不相等 改进上面的KMP算法 nextv ...
- 模式匹配(Java)——烤馍片算法(KMP算法)
模式匹配(Java) 模式匹配 模式匹配是数据结构中字符串的一种基本运算. 由于字符串我们学习过了,大部分操作都比较清楚,但是模式匹配相对来说操作稍微有些难度,所以我们在这里简单的进行讲述. 模式匹配 ...
- 详解图示+例题演练——BF算法+KMP算法基本原理
KMP算法一直让我们又爱又恨,难以理解却又效率很高. 看了看网上的KMP教程,无论是博客还是视频,大多以文字和逻辑推导的方式呈现,纷繁复杂,晦涩难懂.这会让我们在初学时多走很多弯路. 人类接受知识最直 ...
- 字符串的模式匹配--BF算法KMP算法
BF算法是基于主串指针回溯,重新与子串进行逐字符进行比较,主串为S什么要进行回溯呢,原因在于模式P中存在相同的字符或者说由字符(串)存在重复(模式的部分匹配性质),设想如果模式P中字符各不相同,主串就 ...
- 用C语言实现KMP算法,KMP算法 纯C实现
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我自己写的KMP算法: int nt[256]; void get_next1(char* T, int next[], int tlen) { int ...
- (C语言)数据结构算法-病毒感染检测(BF算法KMP算法)
病毒感染检测: 医学研究者最近发现了某些新病毒,得知它们的DNA序列都是环状的.为了快速检测出患者是否感染了相应的病毒,研究者将患者的DNA和病毒的DNA均表示成一些字母组成的字符串序列,然后检测某种 ...
- 字符串算法——KMP算法C++详解
简介 KMP 算法是 D.E.Knuth.J,H,Morris 和 V.R.Pratt 三位神人共同提出的,称之为 Knuth-Morria-Pratt 算法,简称 KMP 算法.该算法相对于 Bru ...
- Knuth-Morris-Pratt 算法(KMP算法)
Knuth-Morris-Pratt 算法,简称 \text{KMP}KMP 算法,由 \text{Donald Knuth}Donald Knuth.\text{James H. Morris}Ja ...
- 算法 - KMP算法(字符串匹配)
百度的一个图文介绍http://www.sohu.com/a/336648975_453160 package Algorithm.kmp;import java.util.Arrays;public ...
最新文章
- 【Linux系统】基础总结
- 三十九、文件的逻辑结构
- c#window服务程序
- flutter制作具有自定义导航栏的渐进式 Web 应用程序
- 通俗讲清楚为什么使用信息熵增益比而不是信息熵增益?
- html:(33):文字排版粗体和斜体
- 怎么引jsp包_电机引接线的制作流程防护等级
- android 多进程 坑,Android 开发中踩过的坑之八:多进程问题
- ASP基础教程:ASP脚本变量、函数、过程和条件语句
- NYOJ 61:传纸条(一)(三维DP)
- 板子无法进入loader模式升级固件时需短接emmc或flash
- 自动化接口用例从 1 到 1000 过程中的实践和思考
- 创业公司的技术总监,去上市公司面试,结果凉了。
- jQuery插件之jqzoom放大镜插件
- Centos 7 x64 英文版安装
- Linux内核调试方法总结
- java-练习题-小学算术题
- MySQL的启动方式
- springsecurity整合jwt实现授权认证,权限分配
- android不能访问数据库文件,android下访问已存在的sqlite数据库文件的办法
热门文章
- 用python编写一个求偶数阶乘的函数_一行Python代码写阶乘函数
- ionic 禁止横屏处理
- 小程序请求php接口返回错误$HTTP_RAW_POST_DATA is deprecated......
- 计算机网络实验五静态路由与RIP协议,实验锐捷实训8-1--配置静态路由和rip协议...
- springMVC环境搭建
- linux root 设置中文,ubuntu 8.04 root用户下的中文环境配置-Linux频道-中国IT实验室
- android system读写权限设置,当然需要root访问权限才能写入Android的system目录
- java容易搞混的技术_Java中比较容易混淆的知识点
- html做app的切换效果,Vue-router结合transition实现app动画切换效果实例分享
- js ajax 访问java函数,将url分配给Java EE项目中的ajax(js)函数