KMP算法实现
来源:互联网 发布:客户数据怎么划分 编辑:程序博客网 时间:2024/05/17 08:12
#include <stdlib.h>#include <stdio.h>#include <string>using namespace std;int * cover(string &pattern){ /*pattern = "abcdab"*/ int size = pattern.size(); int *p = new int[size]; int length = 0,r = size; string str1; if (!p) { printf("new error\n"); exit(1); } for (int i = 1;i < size+1; i++) { str1 = pattern.substr(0, i); length = i - 1; r = 1; while (str1.substr(0,length) != str1.substr(r, length)) { length--; r++; } p[i - 1] = length; } return p;}int kmp(string &str, string &pattern){ int r = -1, i = 0; unsigned int pos; int *p = cover(pattern); int length = str.size() - pattern.size(); for (int m = 0; m < pattern.size(); m++) { printf("pattern[%d] = %4d\n", m, p[m]); } for (i; i < length; i++) { pos = 0; while(pos < pattern.size()) { if (str[i+pos] == pattern[pos]) { pos++; } else { i += p[pos - 1]; break; } } if (pos == (pattern.size() - 1)) { delete[] p; return r = i; } } delete[] p; return r;}int main(){ string str = "abcabcabdfg"; string pattern = "abcabd"; int pos = kmp(str, pattern); printf("%d\n", pos); return 0;}
0 0
- KMP算法及改进KMP算法实现
- [数据结构]KMP算法实现
- KMP算法的实现
- KMP算法实现
- KMP算法实现
- KMP 算法实现
- kmp算法实现
- KMP算法实现
- KMP算法和实现
- KMP算法实现
- KMP算法及实现
- KMP算法的实现
- KMP算法实现
- java实现kmp算法
- KMP算法C++实现
- KMP算法c++实现
- KMP算法java实现
- kmp算法实现
- IOS设计模式之四: (备忘录模式,命令模式)
- Spring Security教程(5)---- 国际化配置及UserCache
- C++ 值传递、指针传递、引用传递详解
- ThreadSafe:诊断并发问题的利器
- 第五章 采用SVM和神经网络的车牌识别
- KMP算法实现
- CGridView: Render customized/complex datacolumns cgridview datacolumn value调用 controller 和 model里的函数
- mysql 用户和权限分配
- 用ajax返回验证的时候总是弹出error原因
- Spring Security教程(6)---- 使用数据库管理用户及权限
- Spring Security教程(7)---- 解决UsernameNotFoundException无法被捕获的问题
- 第五章 采用SVM和神经网络的车牌识别(流程图及详细解释)
- mysql root没有权限的问题解决
- Spring Security教程外篇(1)---- AuthenticationException异常详解