KMP详解
来源:互联网 发布:mac系统下gem安装sass 编辑:程序博客网 时间:2024/06/06 07:29
它的优秀性在于复杂度低而且不止能解决字符串相等的匹配问题
还可以根据题目的需要写个
对于字符串匹配问题,最暴力的做法是这样的:
当匹配串
我们将匹配串的下标返回
于是我们发现这样的算法很不优秀
这样一直讲下标i往回弹显然是不可取的
于是我们开始思考怎么让
显然不将
满足
然而我们发现既然匹配到了
所以我们即需要知道一个最小的下标
一般我们称这个
即当匹配串在下标j处匹配失败时,下标将会跳转到的位置
就不画图了,烦。。。。。
那么这个位置怎么求呢?
我们只需要用匹配串和匹配串自己匹配一次,每次找到一个最长的前缀等于当前后缀即可
当然这个时候也不能直接暴力判相等啊。。。
当判断
所以只需判断
这使整个
模板:
void Get_KMP(int m){//匹配串造fail fail[1]=0;fail[2]=1; for(int i=2,j;i<=m;i++){ j=fail[i]; while(j&&B[i]!=B[j])j=fail[j]; fail[i+1]=j+1; }}void match(int n,int m){//匹配待匹配串 for(int i=1,j=1;i<=n;i++){ while(j&&A[i]!=B[j])j=fail[j]; j++; if(j==m+1){ //处理答案,看题目想干嘛 } }}
阅读全文
0 0
- KMP算法详解 【KMP】
- kmp 详解
- KMP详解~
- KMP详解
- KMP详解~
- KMP详解
- KMP详解
- KMP详解
- KMP详解
- KMP详解
- KMP详解
- KMP详解
- KMP详解
- kmp详解
- kmp详解
- KMP算法详解
- KMP算法详解
- KMP算法详解
- htmlunit取消css,javascript支持
- 安卓APP底部导航栏(有消息圆点指示器),实现fragment切换(eclipse)
- ReactNative学习之旅(1)—跑起来第一个ReactNative项目
- java基础之流程控制
- 模拟用户登陆
- KMP详解
- POJ 1839 Cattle 笔记
- 最终,还是没能成为吹牛逼的资本!(一)
- Spring Boot API 版本权限控制
- 此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态。
- Centos 6.9 Install ajenti
- Java总结一
- SRM560 Div1Medium DrawingPointsDivOne
- spring mvc框架在官网如何下载