KMP算法1--普通的模式匹配算法
来源:互联网 发布:sql卸载 编辑:程序博客网 时间:2024/06/04 23:17
一 简单的模式匹配算法
简单的字符串匹配算法用一个循环来找出所有有效位移,
该循环对n-m+1个可能的每一个s值检查条件P[1....m]=T[s+1....s+m]。
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]
//对n-m+1个可能的位移s中的每一个值,比较相应的字符的循环必须执行m次。
5 then print "Pattern occurs with shift" s
最好情况下,时间复杂度O(n+m)
在最坏情况下,此简单模式匹配算法的运行时间为O((n-m+1)m)
//C languageint strIndex(char* s, char* t, int pos) { int i = pos; int j = 1; while(i<s[0] && j<t[0]){ if(s[i]==t[j]){ i++; j++; } else{ i=i-j+2; j=1; }//while if(j>t[0]) return(i-t[0]); else return 0; } }
C++实现
#include<iostream> #include<string> using namespace std; int match(const string& target,const string& pattern) { int target_length = target.size(); int pattern_length = pattern.size(); int target_index = 0; int pattern_index = 0; while(target_index < target_length && pattern_index < pattern_length) { if(target[target_index]==pattern[pattern_index]) { ++target_index; ++pattern_index; } else { target_index -= (pattern_index-1); pattern_index = 0; } } if(pattern_index == pattern_length) { return target_index - pattern_length; } else { return -1; } } int main() { cout<<match("banananobano","nano")<<endl; return 0; } //运行结果为4。
- KMP算法1--普通的模式匹配算法
- KMP模式匹配算法以及普通模式匹配算法
- 模式匹配的KMP 算法
- 模式匹配的算法Kmp
- 普通模式匹配算法
- 算法:KMP算法实现的模式匹配
- 字符串的模式匹配算法--KMP算法
- 模式匹配---KMP算法
- 模式匹配 KMP算法
- 模式匹配-KMP算法
- KMP模式匹配算法
- KMP模式匹配算法
- KMP模式匹配算法
- 模式匹配kmp算法
- 模式匹配算法kmp
- KMP模式匹配算法
- KMP模式匹配算法
- KMP模式匹配算法
- Linux 静态库与共享库
- VmWare虚拟机增加硬盘容量的方法
- [IT 男人帮 -- 10/23] iPad Mini发布前配置价格全预测(准确度99%)
- 传智博客JAVA基础第二十九天
- HTTPS的七个神话(译文)
- KMP算法1--普通的模式匹配算法
- 博客排名进入3位数时代有感
- 使用 SQL 语句创建 School 数据库(包括参数)、 TblClass 表、 TblStudent 表。 并向其中填入数据。
- 算法导论-AVL树的C++实现
- 新建Web浏览器
- 数据库
- 移植rzsz-3.48
- 从显卡的FBO将数据读出到CPU
- 计算字节对齐的地址 ((sizeof(n)+sizeof(int)-1)&~(sizeof(int)-1))