#算法导论笔记#字符串匹配
来源:互联网 发布:江苏网络问政 编辑:程序博客网 时间:2024/05/16 07:20
朴素字符串匹配方法
Naive-String-Matcher(T, P)
1. n = length(T)
2. m = length(P)
3. for s = 0 to n-m
4. do if P[1....m] = T[s+1....s+m]
5. then print "Pattern occurs with shift" s
算法最坏的情况下时间复杂度是O((n-m+1)*m)。这种算法的效率不高,其原因在于对于s的一个值,我们获得的关于文本的信息在考虑s的其他值完全被忽略了。这样的信息可能是非常有用的。
练习32.1-2 假设模式P中的字符都是不同的。试说明如何对一段n个字符的文本T加速过程Naive-String-Matcher的执行速度,使得其运行时间达到O(n)?
解答:如果P中的字符是完全不同的,那么在上面算法的第4行中,如果发现在第i个位置P[i]不等于T[s+i]时候,在下一个循环中我们可以从第s+i个位置开始匹配,而原来的第s+1个位置。
for(int i=0,j=0;i<n;i++){ if(T[i] == P[j]) j++; else j=0; if(j == m) return true;}
任意次,但嘉定不会出现在文本中。试给出一个多项式运行时间的算法,以确定这样的模式P是否出现在给定的文本T中。
解答:假设P中有m个分隔符,将P分割成P0,P1....Pm,首先在T中搜索P0,如果找到继续寻找P1然后继续下去。
- #算法导论笔记#字符串匹配
- 算法导论笔记:32字符串匹配算法
- 【算法导论】字符串匹配
- 算法导论-字符串匹配
- 算法导论 KMP字符串匹配
- 字符串匹配(算法导论)
- 算法导论—字符串匹配
- 算法导论之字符串匹配
- 算法导论KMP匹配字符串
- 【算法导论】32.1:朴素字符串匹配算法
- 朴素字符串匹配——算法导论
- 算法导论第32章 字符串匹配
- 算法导论32(字符串匹配)
- 字符串匹配问题 ---- 算法导论读书笔记
- 算法导论 第三十三章:字符串匹配
- KMP字符串匹配算法--算法导论示例zz
- 算法导论-第32章- 字符串匹配 - KMP算法
- Java实现算法导论中朴素字符串匹配算法
- 类似系统设置的sharedPreferences
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
- 判断设备的类型ipad或者iphone,调用自带应用,禁止锁屏,设置icon上的数字
- 堆排序算法
- 微博在中国的创新
- #算法导论笔记#字符串匹配
- [AndEngine学习教程] 第7节 场景精灵间的坐标转换
- 中断控制---Tasklet
- Perl 命令行处理command line common usage and skill
- 隐藏程序框图上的大个 Cluster [编写优美的代码]
- [AndEngine学习教程] 第8节 ParticleSystem 粒子系统
- XML添加节点,添加到指定位置
- [AndEngine学习教程] 第9节 CollisionDetection 实体碰撞检测
- POJ 2826 两线段关系求面积